sp_attachsubscription (Transact-SQL)

適用於:SQL ServerAzure SQL Database

將現有的訂閱資料庫附加至任何訂閱者。 這個預存程式會在資料庫的新訂閱者端 master 執行。

重要

此功能已被取代,未來版本將會移除。 這項功能不應該用於新的開發工作。 對於使用參數化篩選進行分割的合併式發行集,我們建議使用分割快照集的新功能,以簡化大量訂閱的初始化。 如需詳細資訊,請參閱 使用參數化篩選建立合併式發行集的快照集。 對於未分割的發行集,您可以使用備份來初始化訂閱。 如需詳細資訊,請參閱 不使用快照集初始化交易式訂閱中手動初始化訂閱。

Transact-SQL 語法慣例

語法

sp_attachsubscription
    [ @dbname = ] N'dbname'
    , [ @filename = ] N'filename'
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] N'subscriber_login' ]
    [ , [ @subscriber_password = ] N'subscriber_password' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @db_master_key_password = ] N'db_master_key_password' ]
[ ; ]

引數

[ @dbname = ] N'dbname'

指定目的地訂閱資料庫的名稱。 @dbname為 sysname,沒有預設值。

[ @filename = ] N'filename'

主要數據檔的名稱和實體位置 (.mdf)。 @filename為 nvarchar(260),沒有預設值。

[ @subscriber_security_mode = ] subscriber_security_mode

同步處理時連接到訂閱者時所要使用的訂閱者安全性模式。 @subscriber_security_mode 為 int,預設值為 NULL

注意

必須使用 Windows 驗證。 如果 @subscriber_security_mode 不是 1 (Windows 驗證),您會收到錯誤。

[ @subscriber_login = ] N'subscriber_login'

同步處理時連接到訂閱者時要使用的訂閱者登入名稱。 @subscriber_login為 sysname,預設值為 NULL

注意

此參數已被取代,而且會維護腳本的回溯相容性。 如果未指定@subscriber_security_mode1@subscriber_login,您會收到錯誤。

[ @subscriber_password = ] N'subscriber_password'

訂閱者密碼。 @subscriber_password為 sysname,預設值為 NULL

注意

此參數已被取代,而且會維護腳本的回溯相容性。 如果未指定1@subscriber_security_mode,且已指定@subscriber_password,您會收到錯誤。

[ @distributor_security_mode = ] distributor_security_mode

同步處理時連接到散發者時要使用的安全性模式。 @distributor_security_mode為 int,預設值為 1

  • 0 指定 SQL Server 驗證
  • 1指定 Windows 驗證

儘可能使用 Windows 驗證。

[ @distributor_login = ] N'distributor_login'

在同步處理時連接到散發者時要使用的散發者登入。 @distributor_login為 sysname,預設值為 NULL如果@distributor_security_mode設定為 0,則需要@distributor_login

[ @distributor_password = ] N'distributor_password'

散發者密碼。 @distributor_password為 sysname,預設值為 NULL如果 @distributor_security_mode 設定為 0,則需要@distributor_password@distributor_password的值必須小於 120 個 Unicode 字元。

重要

請勿使用空白密碼。 請使用增強式密碼。 可能的話,會在執行階段提示使用者輸入安全性認證。 如果您必須將認證儲存在指令碼檔案中,則必須維護這個檔案的安全性,使他人無法在未獲授權的情況下擅自存取。

[ @publisher_security_mode = ] publisher_security_mode

同步處理時連接到發行者時要使用的安全性模式。 @publisher_security_mode為 int,預設值為 1

  • 如果 0為 ,則指定 SQL Server 驗證。
  • 如果 1為 ,則指定 Windows 驗證。 儘可能使用 Windows 驗證。

[ @publisher_login = ] N'publisher_login'

同步處理時連接到發行者時要使用的登入。 @publisher_login為 sysname,預設值為 NULL

[ @publisher_password = ] N'publisher_password'

連接到發行者時所使用的密碼。 @publisher_password為 sysname,預設值為 NULL@publisher_password的值必須小於 120 個 Unicode 字元。

重要

請勿使用空白密碼。 請使用增強式密碼。 可能的話,會在執行階段提示使用者輸入安全性認證。 如果您必須將認證儲存在指令碼檔案中,則必須維護這個檔案的安全性,使他人無法在未獲授權的情況下擅自存取。

[ @job_login = ] N'job_login'

代理程序執行所在的 Windows 帳戶登入。 @job_login為 nvarchar(257),沒有預設值。 此 Windows 帳戶一律用於與散發者的代理程式連線。

[ @job_password = ] N'job_password'

代理程序執行所在的 Windows 帳戶密碼。 @job_password為 sysname 預設值為 NULLjob_password的值必須小於 120 個 Unicode 字元。

重要

請勿使用空白密碼。 請使用增強式密碼。 可能的話,會在執行階段提示使用者輸入安全性認證。 如果您必須將認證儲存在指令碼檔案中,則必須維護這個檔案的安全性,使他人無法在未獲授權的情況下擅自存取。

[ @db_master_key_password = ] N'db_master_key_password'

使用者定義資料庫主要金鑰的密碼(DMK)。 @db_master_key_password為 nvarchar(524),預設值為 NULL。 如果未 指定@db_master_key_password ,則會卸除並重新建立現有的 DMK。

重要

請勿使用空白密碼。 請使用增強式密碼。 可能的話,會在執行階段提示使用者輸入安全性認證。 如果您必須將認證儲存在指令碼檔案中,則必須維護這個檔案的安全性,使他人無法在未獲授權的情況下擅自存取。

傳回碼值

0 (成功) 或 1 (失敗)。

備註

sp_attachsubscription 用於快照式複寫、事務複製和合併式複寫。

如果發行集保留期限已過期,就無法將訂閱附加至發行集。 如果指定了已耗用保留期限的訂用帳戶,當訂閱已附加或第一次同步處理時,就會發生錯誤。 會忽略發行集保留期間為 0 (永不過期) 的發行集。

權限

只有系統管理員固定伺服器角色的成員才能執行 sp_attachsubscription