如何为非 SQL Server 订阅服务器创建订阅(复制 Transact-SQL 编程)

事务复制和快照复制支持向非 SQL Server 订阅服务器发布数据。 您可以使用复制存储过程以编程的方式创建对非 SQL Server 订阅服务器的推送订阅。 有关支持的订阅服务器平台的信息,请参阅非 SQL Server 订阅服务器

安全说明安全说明

如果可能,请在运行时提示用户输入安全凭据。 如果必须在脚本文件中存储凭据,则必须保护文件以防止未经授权的访问。

创建对非 SQL Server 订阅服务器的事务发布或快照发布的推送订阅。

  1. 在发布服务器和分发服务器上安装非 SQL Server 订阅服务器的最新 OLE DB 访问接口。 有关 OLE DB 访问接口的复制要求,请参阅非 SQL Server 订阅服务器Oracle 订阅服务器IBM DB2 订阅服务器

  2. 在发布服务器的发布数据库中,通过执行 sp_helppublication (Transact-SQL) 验证发布是否支持非 SQL Server 订阅服务器。

    • 如果 enabled_for_het_sub 的值为 1,则支持非 SQL Server 订阅服务器。

    • 如果 enabled_for_het_sub 的值为 0,则执行 sp_changepublication (Transact-SQL),为 @property 指定 enabled_for_het_sub 值并将 @value 指定为 true。

      注意注意

      在将 enabled_for_het_sub 更改为 true 之前,必须删除发布的任何现有订阅。 当发布还支持更新订阅时,无法将 enabled_for_het_sub 设置为 true。 更改 enabled_for_het_sub 将影响其他发布属性。 有关详细信息,请参阅非 SQL Server 订阅服务器

  3. 在发布服务器上,对发布数据库执行 sp_addsubscription (Transact-SQL)。 指定 @publication@subscriber@destination_db 的值 (default destination)@subscription_type 的值 push@subscriber_type 的值 3(指定 OLE DB 访问接口)。

  4. 在发布服务器上,对发布数据库执行 sp_addpushsubscription_agent (Transact-SQL)。 指定下列各项:

    • @subscriber@publication 参数。

    • @subscriber_db 的值 (default destination)

    • @subscriber_provider@subscriber_datasrc@subscriber_location@subscriber_provider_string@subscriber_catalog 的非 SQL Server 数据源的属性。

    • 分发服务器中的分发代理运行时所使用的 @job_login@job_password 指定的 Microsoft Windows 凭据。

      注意注意

      使用 Windows 集成身份验证进行的连接始终使用由 @job_login@job_password 指定的 Windows 凭据。 分发代理始终使用 Windows 集成身份验证与分发服务器建立本地连接。 默认情况下,该代理将使用 Windows 集成身份验证连接到订阅服务器。

    • @subscriber_security_mode 的值 0@subscriber_login@subscriber_password 的 OLE DB 访问接口登录信息。

    • 该订阅的分发代理作业计划。 有关详细信息,请参阅如何指定同步计划(复制 Transact-SQL 编程)

    安全说明安全说明

     用远程分发服务器在发布服务器上创建推送订阅时,为所有参数(包括 job_login 和 job_password)提供的值将以纯文本格式发送到分发服务器。 在执行此存储过程之前,应该对发布服务器及其远程分发服务器之间的连接进行加密。 有关详细信息,请参阅加密与 SQL Server 的连接