sp_adddistpublisher (Transact-SQL)
設定發行者來使用指定的散發資料庫。這個預存程序執行於任何資料庫中的散發者端。請注意,您必須已執行 sp_adddistributor (Transact-SQL) 和 sp_adddistributiondb (Transact-SQL) 這兩個預存程序,才能使用這個預存程序。
語法
sp_adddistpublisher [ @publisher= ] 'publisher'
, [ @distribution_db= ] 'distribution_db'
[ , [ @security_mode= ] security_mode ]
[ , [ @login= ] 'login' ]
[ , [ @password= ] 'password' ]
[ , [ @working_directory= ] 'working_directory' ]
[ , [ @trusted= ] 'trusted' ]
[ , [ @encrypted_password= ] encrypted_password ]
[ , [ @thirdparty_flag = ] thirdparty_flag ]
[ , [ @publisher_type = ] 'publisher_type' ]
引數
[@publisher=] 'publisher'
這是發行者名稱。publisher 是 sysname,沒有預設值。[@distribution_db=] 'distribution_db'
這是散發資料庫的名稱。distributor_db 是 sysname,沒有預設值。複寫代理程式利用這個參數來連接發行者。[@security_mode=] security_mode
這是實作的安全性模式。這個參數只供複寫代理程式用來連接佇列更新訂閱的發行者,或連接非 SQL Server 發行者。security_mode 是 int,它可以是下列值之一。值
描述
0
散發者的複寫代理程式利用 SQL Server 驗證來連接到發行者。
1 (預設值)
散發者的複寫代理程式利用 Windows 驗證來連接到發行者。
[@login=] 'login'
這是登入。如果 security_mode 是 0,則需要這個參數。login 是 sysname,預設值是 NULL。複寫代理程式利用這個參數來連接發行者。[@password=] 'password']
這是密碼。password 是 sysname,預設值是 NULL。複寫代理程式利用這個參數來連接發行者。安全性注意事項 密碼不能空白。請使用增強式密碼。
[@working_directory=] 'working_directory'
這是用來儲存發行集的資料檔和結構描述檔之工作目錄的名稱。working_directory 是 nvarchar(255),這個 SQL Server 執行個體的預設值是 ReplData 資料夾,例如,'C:\Program Files\Microsoft SQL Server\MSSQL\MSSQ.1\ReplData'。這個名稱應該用 UNC 格式來指定。[@trusted=] 'trusted'
這個參數已被取代,提供這個參數的目的,只是為了與舊版相容。trusted 是 nvarchar(5),將它設為 false 以外的任何項目都會產生錯誤。[@encrypted_password=] encrypted_password
已不再支援設定 encrypted_password。嘗試將這個 bit 參數設為 1 會產生錯誤。[@thirdparty_flag =] thirdparty_flag
這是指發行者是 SQL Server 的情況。thirdparty_flag 是 bit,它可以是下列值之一。值
描述
0 (預設值)
SQL Server 資料庫。
1
SQL Server 以外的資料庫。
[@publisher_type= ] 'publisher_type'
指定當發行者不是 SQL Server 時的發行者類型。publisher_type 是 sysname,它可以是下列值之一。值
描述
MSSQLSERVER
(預設值)
指定 SQL Server 發行者。
ORACLE
指定標準 Oracle 發行者。
ORACLE GATEWAY
指定 Oracle Gateway 發行者。
如需有關 Oracle 發行者和 Oracle Gateway 發行者之差異的詳細資訊,請參閱<設定 Oracle 發行者>。
傳回碼值
0 (成功) 或 1 (失敗)
備註
sp_adddistpublisher 供快照式複寫、交易式複寫和合併式複寫使用。
範例
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
-- Install the Distributor and the distribution database.
DECLARE @distributor AS sysname;
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @directory AS nvarchar(500);
DECLARE @publicationDB AS sysname;
-- Specify the Distributor name.
SET @distributor = $(DistPubServer);
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
-- Specify the replication working directory.
SET @directory = N'\\' + $(DistPubServer) + '\repldata';
-- Specify the publication database.
SET @publicationDB = N'AdventureWorks';
-- Install the server MYDISTPUB as a Distributor using the defaults,
-- including autogenerating the distributor password.
USE master
EXEC sp_adddistributor @distributor = @distributor;
-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master
EXEC sp_adddistributiondb @database = @distributionDB,
@security_mode = 1;
GO
-- Create a Publisher and enable AdventureWorks for replication.
-- Add MYDISTPUB as a publisher with MYDISTPUB as a local distributor
-- and use Windows Authentication.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
USE [distribution]
EXEC sp_adddistpublisher @publisher=@publisher,
@distribution_db=@distributionDB,
@security_mode = 1;
GO
權限
只有系統管理員 (sysadmin) 固定伺服器角色的成員,才能夠執行 sp_adddistpublisher。