sp_attachsubscription (Transact-SQL)
將現有的訂閱資料庫附加至任何訂閱者。 這個預存程式會在資料庫的新訂閱者端 master
執行。
重要
此功能已被取代,未來版本將會移除。 這項功能不應該用於新的開發工作。 對於使用參數化篩選進行分割的合併式發行集,我們建議使用分割快照集的新功能,以簡化大量訂閱的初始化。 如需詳細資訊,請參閱 使用參數化篩選建立合併式發行集的快照集。 對於未分割的發行集,您可以使用備份來初始化訂閱。 如需詳細資訊,請參閱 不使用快照集初始化交易式訂閱中手動初始化訂閱。
語法
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 預設值為 NULL
。 job_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
。