sp_addscriptexec (Transact-SQL)

適用於:SQL Server

將 Transact-SQL 腳本 (.sql 檔案) 張貼至發行集的所有訂閱者。 這個預存程式會在發行集資料庫的發行者端執行。

Transact-SQL 語法慣例

語法

sp_addscriptexec
    [ @publication = ] N'publication'
    , [ @scriptfile = ] N'scriptfile'
    [ , [ @skiperror = ] skiperror ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

引數

[ @publication = ] N'publication'

發行集的名稱。 @publication為 sysname,沒有預設值。

[ @scriptfile = ] N'scriptfile'

SQL 腳本檔案的完整路徑。 @scriptfile為 nvarchar(4000),沒有預設值。

[ @skiperror = ] skiperror

指出當腳本處理期間發生錯誤時,散發代理程式 或 合併代理程式 是否應該停止。 @skiperror為 bit,預設值為 0

  • 0 = 代理程式停止。
  • 1 = 代理程式會繼續文稿並忽略錯誤。

[ @publisher = ] N'publisher'

指定非 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 公用程式來測試腳本。

注意

略過的錯誤會繼續記錄在 Agent 歷程記錄中以供參考。

sp_addscriptexec只有在 SQL Server 訂閱者支援使用 FTP 進行快照集傳遞的發行集時使用 來張貼腳本檔案。

權限

只有系統管理員固定伺服器角色或db_owner固定資料庫角色的成員才能執行 sp_addscriptexec