SQL Server Replication - 获取last_distsync的最佳方法?

时间:2013-04-05 20:25:30

标签: sql-server replication database-replication

由于桌面堆问题,我们试图了解订阅何时挂起并且过时。我们看到的最好的方法是使用last_distsync,从运行中获取

 [distribution].sys.sp_replmonitorhelpsubscription @publisher = @mypublisher, @publication_type = 0

但是,因为它有一个INSERT EXEC,你不能轻易地将它从SQL中保存到表中 - 即使这样做也行不通(它可能偶尔工作,然后你得到“INSERT EXEC语句不能嵌套。“):

DECLARE @sql NVARCHAR(4000), @params NVARCHAR(4000), @mypublisher sysname, @myrefreshpolicy NCHAR(1), @mypublication_type int
SELECT @sql = 'exec [distribution].sys.sp_replmonitorhelpsubscription @publisher = @mypublisher, @publication_type = 0',
@params = N'@mypublisher sysname', @mypublisher = @@servername
INSERT INTO #tmp_subscriptiondata
EXEC sp_executesql @sql, @params, @mypublisher = @mypublisher

缺少(这是我接下来要去的地方)使用Powershell脚本并使用invoke-sqlcmd2来编写它,是否有一种纯粹在SQL中的方式来获取该SP的信息?我正在考虑写一个淘汰赛,但看起来我正在达到我的访问限制,即使是作为系统管理员(使用SP,并将其插入表中,并得到了这个)

Msg 2760, Level 16, State 1, Procedure sp_replmonitorhelpsubscription2, Line 1084
The specified schema name "sys" either does not exist or you do not have permission to use it.

0 个答案:

没有答案