SQL 2008 创建推送订阅
2016-04-08 14:44
543 查看
如何创建推送订阅(复制 Transact-SQL 编程)
SQL Server 2008SQL Server 2005
创建快照或事务发布的推送订阅
在发布服务器的发布数据库中,通过执行sp_helppublication 核实发布是否支持推送订阅。
如果 allow_push 的值为 1,则支持推送订阅。
如果 allow_push 的值为 0,则执行
sp_changepublication,将 @property 指定为 allow_push,将
@value 指定为 true。
在发布服务器的发布数据库中,执行
sp_addsubscription。 指定 @publication、@subscriber 和
@destination_db。 将 @subscription_type 的值指定为
push。 有关如何更新 Subscription 的信息,请参阅如何创建对事务发布的可更新订阅(复制 Transact-SQL 编程)。
在发布服务器的发布数据库中,执行
sp_addpushsubscription_agent。 指定下列各项:
@subscriber、@subscriber_db 和 @publication 参数。
分发服务器中的分发代理运行时所使用的 @job_login 和 @job_password 指定的 Microsoft Windows 凭据。
注意 |
---|
使用 Windows 集成身份验证进行的连接始终使用由 @job_login 和 @job_password 指定的 Windows 凭据。 分发代理始终使用 Windows 集成身份验证与分发服务器进行本地连接。 默认情况下,该代理将使用 Windows 集成身份验证连接到订阅服务器。 |
@subscriber_login 和 @subscriber_password 指定的 Microsoft SQL Server 登录信息。 如果您需要在连接到订阅服务器时使用 SQL Server 身份验证,则指定这些参数。
该订阅的分发代理作业计划。 有关详细信息,请参阅如何指定同步计划(复制 Transact-SQL 编程)。
安全说明 |
---|
在发布服务器上使用远程分发服务器创建推送订阅时,为所有参数(包括 job_login 和 job_password)提供的值都将作为纯文本发送到分发服务器。 在执行此存储过程之前,应该对发布服务器及其远程分发服务器之间的连接进行加密。 有关详细信息,请参阅加密与 SQL Server 的连接。 |
创建合并发布的推送订阅
在发布服务器的发布数据库中,通过执行sp_helpmergepublication 核实发布是否支持推送订阅。
如果 allow_push 的值为 1,则发布支持推送订阅。
如果 allow_push 的值不为 1,则执行
sp_changemergepublication,将 @property 指定为 allow_push,将
@value 指定为 true。
在发布服务器的发布数据库中,执行
sp_addmergesubscription,并指定以下参数:
@publication。 这是发布的名称。
@subscriber_type。 对于客户端订阅,请指定 local,对于服务器订阅,请指定
global。
@subscription_priority。 对于服务器订阅,请指定订阅的优先级(从 0.00 到
99.99)。
有关详细信息,请参阅高级合并复制冲突的检测和解决。
在发布服务器的发布数据库中,执行
sp_addmergepushsubscription_agent。 指定下列各项:
@subscriber、@subscriber_db 和 @publication 参数。
分发服务器中的合并代理运行时所使用的 @job_login 和 @job_password 指定的 Windows 凭据。
注意 |
---|
使用 Windows 集成身份验证进行的连接始终使用由 @job_login 和 @job_password 指定的 Windows 凭据。 合并代理始终使用 Windows 集成身份验证与分发服务器进行本地连接。 默认情况下,该代理将使用 Windows 集成身份验证连接到订阅服务器。 |
@subscriber_login 和 @subscriber_password 指定的 SQL Server 登录信息。 如果您需要在连接到订阅服务器时使用 SQL Server 身份验证,则指定这些参数。
(可选)@publisher_security_mode 的 0 值以及
@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
相关文章推荐
- mysql数据库乱码
- Oracle建立用户
- Windows7安装和配置MySql5.7.11
- Memcache简介
- jdbc学习笔记
- Oracle数据库用户权限和管理员权限
- Oracle数据库备份
- Springmvc + mongodb + dataTables 分页显示数据及导出Excel文件
- 数据库中的常用Key术语
- MySql ibdata1文件太大如何缩小
- ArcEngine关闭个人地理数据库PGDB连接并删除该文件
- Mysql支持的数据类型(总结)
- Sqlite3数据块以BLOB字段存储二进制数据块
- 修改数据库编码 - MySQL
- MySQL数据库能够用随意ip连接訪问的方法
- Mac下安装libeven和memcached
- java操作oracle的blob,clob数据
- 数据库的优化处理方案
- Oracle11g客户端安装及plsql配置
- Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法