sp_addscriptexec (Transact-SQL)
將 SQL 指令碼 (.sql 檔) 公佈到發行集的所有訂閱者。這個預存程序執行於發行集資料庫的發行者端。
語法
sp_addscriptexec [ @publication = ] publication
[ , [ @scriptfile = ] 'scriptfile' ]
[ , [ @skiperror = ] 'skiperror' ]
[ , [ @publisher = ] 'publisher' ]
引數
[@publication= ] 'publication'
這是發行集的名稱。publication 是 sysname,沒有預設值。[@scriptfile= ] 'scriptfile'
這是 SQL 指令碼檔案的完整路徑。scriptfile 是 nvarchar(4000),沒有預設值。[@skiperror= ] 'skiperror'
表示在指令碼處理期間發生錯誤時,是否應該停止散發代理程式或合併代理程式。SkipError 是 bit,預設值是 0。0 = 代理程式將停止。
1 = 代理程式繼續執行指令碼,並忽略錯誤。
[@publisher= ] 'publisher'
指定非 Microsoft SQL Server 發行者。publisher 是 sysname,預設值是 NULL。[!附註]
當從非 SQL Server 發行者發行時,不應使用 publisher。
傳回碼值
0 (成功) 或 1 (失敗)
備註
sp_addscriptexec 用於交易式複寫和合併式複寫中。
快照式複寫並不使用 sp_addscriptexec。
若要使用 sp_addscriptexec,SQL Server 服務帳戶必須有快照集位置的讀寫權限以及任何指令碼之儲存位置的讀取權限。
sqlcmd 公用程式用來執行在訂閱者端的指令碼,這個指令碼是在連接到訂閱資料庫時,在散發代理程式或合併代理程式所用的安全性內容中執行。在舊版的 SQL Server 上執行代理程式時,會使用 osql 公用程式,而不是 sqlcmd。
將指令碼套用至訂閱者時,sp_addscriptexec 非常有用,它會利用 sqlcmd,將指令碼的內容套用至訂閱者上。不過,由於訂閱者組態可能會不同,因此,在公佈到發行者之前測試的指令碼仍可能在訂閱者中造成錯誤。skiperror 提供您使散發代理程式或合併代理程式忽略錯誤並繼續作業的能力。請在執行 sp_addscriptexec 之前,先利用 sqlcmd 測試指令碼。
[!附註]
略過的錯誤會繼續記錄到代理程式記錄中,以便參考。
只支援 Microsoft SQL Server 訂閱者利用 sp_addscriptexec 來公佈以 FTP 傳遞快照集的發行集之指令碼檔案。
權限
只有系統管理員 (sysadmin) 固定伺服器角色或 db_owner 固定資料庫角色的成員,才能夠執行 sp_addscriptexec。