跳转到主要内容

概览

OneSignal + SQL Server 集成能够将您的 Microsoft SQL Server 数据库中的自定义事件同步到 OneSignal,以基于用户行为触发自动化消息活动和 Journey。 SQL Server 是微软的关系数据库管理系统,专为企业应用程序和数据仓库而设计。

要求

  • 访问自定义事件(目前处于测试阶段)
  • 升级账户计划(免费应用不可用)。

SQL Server

  • 具有网络访问权限的 SQL Server 实例
  • 具有适当权限的数据库用户
  • 包含结构化行为数据的事件表
  • 从 OneSignal 到您的 SQL Server 实例的网络连接

设置

1

为 OneSignal 创建专用用户

创建具有强大、唯一密码的专用用户账户:
-- Create census user with the ability to sign in with a password
CREATE USER CENSUS WITH PASSWORD = '<strong-unique-password>';

-- Give the census user the ability to connect to database
GRANT CONNECT TO CENSUS;
所有 SQL Server 命令将在运行脚本时指定的数据库内运行。
2

授予读取权限

为您的事件数据提供只读访问权限:
-- Give the census user the ability to read tables within the database
EXEC sp_addrolemember 'db_datareader', CENSUS;

-- Grant census user ability to read data from within a schema
-- Run this for each schema you intend OneSignal to access
GRANT SELECT, VIEW DEFINITION ON SCHEMA::<your-schema> TO CENSUS;
<your-schema> 替换为包含事件数据的实际架构名称。对于您希望 OneSignal 访问的每个架构,重复此命令。
3

配置高级同步引擎(可选)

为提高性能,为 OneSignal 的同步状态创建记账架构:
-- Create a private bookkeeping schema where Census can store sync state
CREATE SCHEMA CENSUS AUTHORIZATION CENSUS;

-- Give the census user full access to the bookkeeping schema
GRANT ALTER, DELETE, EXECUTE, INSERT, REFERENCES, SELECT,
          UPDATE, VIEW DEFINITION ON SCHEMA::CENSUS TO CENSUS;

-- Give the census user the ability to create tables within the database
GRANT CREATE TABLE TO CENSUS;
如果使用基本同步引擎或只读模式,请跳过此步骤。
4

连接到 OneSignal

在 OneSignal 中,前往 数据 > 集成,然后点击 添加集成选择 SQL Server 并提供以下连接详细信息:
  • **主机:**您的 SQL Server 实例主机名或 IP 地址
  • **端口:**1433(默认)或您的自定义端口
  • **数据库:**您的数据库名称
  • 用户名:CENSUS
  • **密码:**步骤 1 中的密码

事件数据映射

将您的 映射到 OneSignal 的自定义事件格式:
OneSignal 字段描述必需
nameevent_name事件标识符
external_iduser_id用户标识符
timestampevent_timestamp事件发生时间
propertiesevent_data

示例事件表架构

-- Example SQL Server event table
CREATE TABLE analytics.user_events (
    event_id BIGINT IDENTITY(1,1) PRIMARY KEY,
    event_name NVARCHAR(100) NOT NULL,
    user_id NVARCHAR(255) NOT NULL,
    event_timestamp DATETIME2 DEFAULT GETUTCDATE(),
    event_data NVARCHAR(MAX),
    session_id NVARCHAR(255),
    device_type NVARCHAR(50)
);

SQL 查询模式

编写自定义 SQL 查询来转换您的事件数据:
-- Example: Recent high-value events
SELECT
    event_name,
    user_id,
    event_timestamp,
    event_data
FROM analytics.user_events
WHERE event_timestamp >= DATEADD(day, -7, GETUTCDATE())
    AND JSON_VALUE(event_data, '$.value') > 100
ORDER BY event_timestamp DESC;

高级网络配置

OneSignal 可以成功连接到使用高级网络控制的 SQL Server 实例,包括地区限制、IP 地址允许列表或 SSH 隧道。 有关配置网络访问的更多信息,请联系您的 SQL Server 管理员或 OneSignal 支持。

同步引擎选项

基本同步引擎

  • 对您的事件数据的只读访问
  • 由 OneSignal 基础设施管理的状态跟踪
  • 使用最少权限的简单设置

高级同步引擎

  • 通过本地状态跟踪提升性能
  • 需要额外权限来创建表
  • 推荐用于高容量事件处理

限制

  • 复杂查询可能在高流量期间影响数据库性能
  • JSON 操作需要 SQL Server 2016 或更高版本以获得最佳性能
  • 所有权限都在设置期间指定的数据库级别授予

常见问题

我可以连接到多个 SQL Server 架构吗?

可以,您可以通过为包含事件数据的每个架构运行 GRANT SELECT, VIEW DEFINITION ON SCHEMA::<schema> 语句来授予 CENSUS 用户访问多个架构的权限。

支持哪些 SQL Server 版本?

OneSignal 支持现代 SQL Server 版本。对于事件查询中的 JSON 操作,建议使用 SQL Server 2016 或更高版本。

我需要使用高级同步引擎吗?

不需要,基本同步引擎适用于大多数用例。如果您需要增强性能并且可以允许 OneSignal 在您的 SQL Server 实例中创建表,请使用高级同步引擎。
I