Sql-Server

如何從訂閱伺服器/訂閱者數據庫中找到分發伺服器和發布伺服器的名稱

  • September 29, 2015

請記住,我可以根據此連結將計算列添加到訂閱表中:

SQL Server:事務複製計算列

我已經在做,並且還在復製表中添加索引(在訂閱伺服器中)

然而,

當我這樣做時,我必鬚麵對太多的鎖和塊來/從複製,如下圖所示:

在此處輸入圖像描述

這是我在創建索引時阻止的複制命令:

create procedure [sp_MSupd_dbotblBGiftVoucher]
       @c1 binary(24) = NULL,
       @c2 smallint = NULL,
       @c3 varchar(20) = NULL,
       @c4 int = NULL,
       @c5 varchar(20) = NULL,
       @c6 int = NULL,
       @c7 bit = NULL,
       @c8 char(1) = NULL,
       @pkc1 binary(24) = NULL,
       @bitmap binary(1)
as
begin  
if (substring(@bitmap,1,1) & 1 = 1)
begin 

update [dbo].[tblBGiftVoucher] set
       [strVoucherNumber] = case substring(@bitmap,1,1) & 1 when 1 then @c1 else [strVoucherNumber] end,
       [sintMarketID] = case substring(@bitmap,1,1) & 2 when 2 then @c2 else [sintMarketID] end,
       [strIssuedBxOrderNo] = case substring(@bitmap,1,1) & 4 when 4 then @c3 else [strIssuedBxOrderNo] end,
       [lngIssuedUserID] = case substring(@bitmap,1,1) & 8 when 8 then @c4 else [lngIssuedUserID] end,
       [strReedemedBxOrderNo] = case substring(@bitmap,1,1) & 16 when 16 then @c5 else [strReedemedBxOrderNo] end,
       [lngRedeemedUserID] = case substring(@bitmap,1,1) & 32 when 32 then @c6 else [lngRedeemedUserID] end,
       [blnVoid] = case substring(@bitmap,1,1) & 64 when 64 then @c7 else [blnVoid] end,
       [strCheckDigit] = case substring(@bitmap,1,1) & 128 when 128 then @c8 else [strCheckDigit] end
   where [strVoucherNumber] = @pkc1
if @@rowcount = 0
   if @@microsoftversion>0x07320000
       exec sp_MSreplraiserror 20598
end  
else
begin 

update [dbo].[tblBGiftVoucher] set
       [sintMarketID] = case substring(@bitmap,1,1) & 2 when 2 then @c2 else [sintMarketID] end,
       [strIssuedBxOrderNo] = case substring(@bitmap,1,1) & 4 when 4 then @c3 else [strIssuedBxOrderNo] end,
       [lngIssuedUserID] = case substring(@bitmap,1,1) & 8 when 8 then @c4 else [lngIssuedUserID] end,
       [strReedemedBxOrderNo] = case substring(@bitmap,1,1) & 16 when 16 then @c5 else [strReedemedBxOrderNo] end,
       [lngRedeemedUserID] = case substring(@bitmap,1,1) & 32 when 32 then @c6 else [lngRedeemedUserID] end,
       [blnVoid] = case substring(@bitmap,1,1) & 64 when 64 then @c7 else [blnVoid] end,
       [strCheckDigit] = case substring(@bitmap,1,1) & 128 when 128 then @c8 else [strCheckDigit] end
   where [strVoucherNumber] = @pkc1
if @@rowcount = 0
   if @@microsoftversion>0x07320000
       exec sp_MSreplraiserror 20598
end 
end 

伺服器太多了,不知道哪個伺服器是發布者,發布者數據庫在哪裡,如果有發布者伺服器,是哪一個?

有沒有辦法從訂閱者那裡找到發布者和分發者(伺服器和數據庫)的名稱?

一些資訊在這裡: 如何重新啟動事務複製的分發代理?

但我仍在努力暫停至少一篇文章的複制,但我可以在整個出版物中暫停它。

我想要實現的是暫停我目前訂閱(我所在的數據庫)的複制……

有沒有辦法從訂閱者那裡找到發布者和分發者(伺服器和數據庫)的名稱?

對於來自訂閱者的推送訂閱,您可以查詢MSsubscription_agents以獲取發布者和發布者數據庫。

對於訂閱者的拉訂閱,您可以查詢MSsubscription_properties以獲取發布者和分發者。查看列publisherpublisher_dbdistribution。分發數據庫名稱可能是分發。

引用自:https://dba.stackexchange.com/questions/116529