SQL 2008 创建推送订阅

如何创建推送订阅(复制 Transact-SQL 编程)

              




创建快照或事务发布的推送订阅

  1. 在发布服务器的发布数据库中,通过执行 sp_helppublication 核实发布是否支持推送订阅。

    • 如果 allow_push 的值为 1,则支持推送订阅。

    • 如果 allow_push 的值为 0,则执行 sp_changepublication,将 @property 指定为 allow_push,将 @value 指定为 true

  2. 在发布服务器的发布数据库中,执行 sp_addsubscription。 指定 @publication@subscriber@destination_db。 将 @subscription_type 的值指定为 push。 有关如何更新 Subscription 的信息,请参阅如何创建对事务发布的可更新订阅(复制 Transact-SQL 编程)

  3. 在发布服务器的发布数据库中,执行 sp_addpushsubscription_agent。 指定下列各项:

    • @subscriber@subscriber_db@publication 参数。

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

      注意注意

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

    • (可选)@subscriber_security_mode0 值以及 @subscriber_login@subscriber_password 指定的 Microsoft SQL Server 登录信息。 如果您需要在连接到订阅服务器时使用 SQL Server 身份验证,则指定这些参数。

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

    安全说明安全说明

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

创建合并发布的推送订阅

  1. 在发布服务器的发布数据库中,通过执行 sp_helpmergepublication 核实发布是否支持推送订阅。

    • 如果 allow_push 的值为 1,则发布支持推送订阅。

    • 如果 allow_push 的值不为 1,则执行 sp_changemergepublication,将 @property 指定为 allow_push,将 @value 指定为 true

  2. 在发布服务器的发布数据库中,执行 sp_addmergesubscription,并指定以下参数:

    • @publication。 这是发布的名称。

    • @subscriber_type。 对于客户端订阅,请指定 local,对于服务器订阅,请指定 global

    • @subscription_priority。 对于服务器订阅,请指定订阅的优先级(从 0.0099.99)。

      有关详细信息,请参阅高级合并复制冲突的检测和解决

  3. 在发布服务器的发布数据库中,执行 sp_addmergepushsubscription_agent。 指定下列各项:

    • @subscriber@subscriber_db@publication 参数。

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

      注意注意

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

    • (可选)@subscriber_security_mode0 值以及 @subscriber_login@subscriber_password 指定的 SQL Server 登录信息。 如果您需要在连接到订阅服务器时使用 SQL Server 身份验证,则指定这些参数。

    • (可选)@publisher_security_mode0 值以及 @publisher_login@publisher_password 指定的 SQL Server 登录信息。 如果您需要在连接到发布服务器时使用 SQL Server 身份验证,则指定这些值。

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

    安全说明安全说明

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

以下示例创建事务发布的推送订阅。 登录名和密码在运行时使用 sqlcmd 脚本变量进行提供。

TSQL
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2008R2Replica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks2008R2]
EXEC sp_addsubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @destination_db = @subscriptionDB, 
  @subscription_type = N'push';

--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO


以下示例创建合并发布的推送订阅。 登录名和密码在运行时使用 sqlcmd 脚本变量进行提供。

TSQL
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2008R2Replica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks2008R2]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @hostname = @hostname;

--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值