日期:2014-05-17  浏览次数:20459 次

复制监控,快照如何触发触发器,急
如果远程监控,分发代理是否正常。用SQL语句实现,复制监视器可以看,但看着太麻烦
另外,初始化快照时,是否可以设置可以触发订阅表的触发器?

------解决方案--------------------
--#1.先建立链接服务器后,调用OPENQUERY查询,注意FMTONLY,NOCOUNT选项
SELECT *
FROM OPENQUERY
(
[链接服务器],
'SET FMTONLY OFF;SET NOCOUNT ON; EXEC distribution.sys.sp_MSenum_distribution'
) T
WHERE T.[status] > 4 --1 = 启动;2 = 成功;3 = 正在进行;4 = 空闲;5 = 重试;6 = 失败
ORDER BY [status] DESC

--#2.或者直接调用OPENROWSET查询
--打开高级选项,允许即席查询
EXEC SP_CONFIGURE 'show advanced options',1  
RECONFIGURE  
EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',1  
RECONFIGURE
GO

SELECT *
FROM OPENROWSET
(
'SQLOLEDB',
'SERVER=127.0.0.1,1433;uid=xx;pwd=xxxxx;Database=master',
'SET FMTONLY OFF;SET NOCOUNT ON; EXEC distribution.sys.sp_MSenum_distribution'
) T
WHERE T.[status] > 4
ORDER BY [status] DESC

--关闭选项
EXEC SP_CONFIGURE 'Ad Hoc Distributed Queries',0
RECONFIGURE
EXEC SP_CONFIGURE 'show advanced options',0  
RECONFIGURE
GO

------解决方案--------------------
--开启项目属性:fire_triggers_on_snapshot/schema_option, 初始化快照时,会触发触发器
--参考http://msdn.microsoft.com/zh-cn/library/ms173857
EXEC sp_changearticle
@publication = 'publication_name', --你的发布名称
@article = 'tableA', --发布项目的名称
@property='fire_triggers_on_snapshot',
@value='true' --好像从界面上无法设置,只能用代码设置