共用方式為


sp_attachsubscription (Transact-SQL)

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

重要注意事項重要事項

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

主題連結圖示Transact-SQL 語法慣例

語法

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

引數

  • [@dbname= ] 'dbname'
    這是依名稱指定目的地訂閱資料庫的字串。dbname 是 sysname,沒有預設值。

  • [@filename= ] 'filename'
    這是主要 MDF (master 資料檔) 的名稱和實體位置。filename 是 nvarchar(260),沒有預設值。

  • [@subscriber_security_mode= ] 'subscriber_security_mode'
    這是在同步處理時,用來連接訂閱者的訂閱者安全性模式。subscriber_security_mode 是 int,預設值是 NULL。

    [!附註]

    必須使用 Windows 驗證。如果 subscriber_security_mode 不是 1 (Windows 驗證),便會傳回錯誤。

  • [@subscriber_login= ] 'subscriber_login'
    這是在同步處理時,用來連接訂閱者的訂閱者登入名稱。subscriber_login 是 sysname,預設值是 NULL。

    [!附註]

    這個參數已被取代,維護它的目的,只是為了與舊版的指令碼相容。如果 subscriber_security_mode 不是 1,且指定了 subscriber_login,便會傳回錯誤。

  • [@subscriber_password= ] 'subscriber_password'
    這是訂閱者密碼。subscriber_password 是 sysname,預設值是 NULL。

    [!附註]

    這個參數已被取代,維護它的目的,只是為了與舊版的指令碼相容。如果 subscriber_security_mode 不是 1,且指定了 subscriber_password,便會傳回錯誤。

  • [@distributor_security_mode= ] distributor_security_mode
    這是在同步處理時,用來連接散發者的安全性模式。distributor_security_mode 是 int,預設值是 00 指定 SQL Server 驗證。1 指定 Windows 驗證。盡可能使用 Windows 驗證。

  • [@distributor_login= ] 'distributor_login'
    這是在同步處理時,用來連接散發者的散發者登入。如果 distributor_security_mode 設為 0,則需要 distributor_login。distributor_login 是 sysname,預設值是 NULL。

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

    安全性注意事項安全性注意事項

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

  • [@publisher_security_mode= ] publisher_security_mode
    這是在同步處理時,用來連接發行者的安全性模式。publisher_security_mode 是 int,預設值是 1。如果是 0,則指定 SQL Server 驗證。如果是 1,便指定 Windows 驗證。盡可能使用 Windows 驗證。

  • [@publisher_login= ] 'publisher_login'
    這是在同步處理時,用來連接發行者的登入。publisher_login 是 sysname,預設值是 NULL。

  • [@publisher_password= ] 'publisher_password'
    這是連接到發行者時所用的密碼。publisher_password 是 sysname,預設值是 NULL。publisher_password 的值必須小於 120 個 Unicode 字元。

    安全性注意事項安全性注意事項

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

  • [@job_login= ] 'job_login'
    這是執行代理程式之 Windows 帳戶的登入。job_login 是 nvarchar(257),沒有預設值。通往散發者的代理程式連接一律使用這個 Windows 帳戶。

  • [@job_password= ] 'job_password'
    這是執行代理程式之 Windows 帳戶的密碼。job_password 是 sysname,沒有預設值。job_password 的值必須小於 120 個 Unicode 字元。

    安全性注意事項安全性注意事項

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

  • [@db_master_key_password= ] 'db_master_key_password'
    這是使用者自訂資料庫主要金鑰的密碼。db_master_key_password 是 nvarchar(524),預設值是 NULL。如果未指定 db_master_key_password,便會卸除並重新建立現有的資料庫主要金鑰。

    安全性注意事項安全性注意事項

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

傳回碼值

0 (成功) 或 1 (失敗)

備註

sp_attachsubscription 用於快照式複寫、交易式複寫和合併式複寫中。

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

權限

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