sp_adddistributiondb (Transact-SQL)
建立新的散發資料庫並安裝散發者結構描述。 散發資料庫會儲存複寫所用的預存程序、結構描述和中繼資料。 這個預存程序執行於 master 資料庫的散發者端,以便建立散發資料庫,它會安裝必要的資料表以及啟用複寫散發時所需要的預存程序。
語法
sp_adddistributiondb [ @database= ] 'database'
[ , [ @data_folder= ] 'data_folder' ]
[ , [ @data_file= ] 'data_file' ]
[ , [ @data_file_size= ] data_file_size ]
[ , [ @log_folder= ] 'log_folder' ]
[ , [ @log_file= ] 'log_file' ]
[ , [ @log_file_size= ] log_file_size ]
[ , [ @min_distretention= ] min_distretention ]
[ , [ @max_distretention= ] max_distretention ]
[ , [ @history_retention= ] history_retention ]
[ , [ @security_mode= ] security_mode ]
[ , [ @login= ] 'login' ]
[ , [ @password= ] 'password' ]
[ , [ @createmode= ] createmode ]
[ , [ @from_scripting = ] from_scripting ]
引數
[ @database=] database'
這是要建立的散發資料庫名稱。 database 是 sysname,沒有預設值。 如果指定的資料庫已經存在,且尚未標示為散發資料庫,便會安裝啟用散發所需要的物件,且會將資料庫標示為散發資料庫。 如果指定的資料庫已啟用為散發資料庫,就會傳回錯誤。[ @data_folder=] **'**data_folder'
這是用於儲存散發資料庫資料檔的目錄名稱。 data_folder 是 nvarchar(255),預設值是 NULL。 如果是 NULL,就會使用該 Microsoft SQL Server 執行個體的資料目錄,例如 C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data。[ @data_file=] 'data_file'
這是資料庫檔案的名稱。 data_file 是 nvarchar(255),預設值是 database。 如果是 NULL,這個預存程序會利用資料庫名稱來建構檔案名稱。[ @data_file_size=] data_file_size
這是初始資料檔大小 (以 MB 為單位)。 data_file_size i是 int,預設值是 5MB。[ @log_folder=] 'log_folder'
這是資料庫記錄檔的目錄名稱。 log_folder 是 nvarchar(255),預設值是 NULL。 如果是 NULL,就會使用該 SQL Server 執行個體的資料目錄 (例如 C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data)。[ @log_file=] 'log_file'
這是記錄檔的名稱。 log_file 是 nvarchar(255),預設值是 NULL。 如果是 NULL,這個預存程序會利用資料庫名稱來建構檔案名稱。[ @log_file_size=] log_file_size
這是初始記錄檔大小 (以 MB 為單位)。 log_file_size 是 int,預設值是 0 MB,表示利用 SQL Server 所允許的最小記錄檔大小來建立檔案大小。[ @min_distretention=] min_distretention
這是從散發資料庫中刪除交易之前的最小保留期限 (以小時為單位)。 min_distretention 是 int,預設值為 0 個小時。[ @max_distretention=] max_distretention
這是在刪除交易之前的最大保留期限 (以小時為單位)。 max_distretention 是 int,預設值為 72 個小時。 未收到超過最大散發保留期限之複寫命令的訂閱,會被標示為非使用中,必須重新初始化。 針對每個非使用中的訂閱,系統會發出 RAISERROR 21011。 0 值表示複寫的交易未儲存在散發資料庫中。[ @history_retention=] history_retention
這是保留記錄的時數。 history_retention 是 int,預設值為 48 個小時。[ @security_mode=] security_mode
這是用於連接散發者的安全性模式。 security_mode 是 int,預設值是 1。 0 會指定 SQL Server 驗證,1 則指定 Windows 整合式驗證。[ @login=] 'login'
這是連接到散發者來建立散發資料庫時,所用的登入名稱。 如果 security_mode 設定為 0,這就是必要項。 login 是 sysname,預設值是 NULL。[ @password=] 'password'
這是連接到散發者時所用的密碼。 如果 security_mode 設為 0,就需要密碼。 password 是 sysname,預設值是 NULL。[ @createmode=] createmode
createmode 是 int,預設值為 1,而且可以是下列其中一個值。值
說明
0
僅供參考之用。不支援。我們無法保證未來的相容性。
1 (預設值)
CREATE DATABASE,或使用現有的資料庫,再套用 instdist.sql 檔來建立散發資料庫中的複寫物件。
2
僅供參考之用。不支援。我們無法保證未來的相容性。
[ @from_scripting = ] from_scripting
僅供參考之用。不支援。我們無法保證未來的相容性。
傳回碼值
0 (成功) 或 1 (失敗)
備註
sp_adddistributiondb 用於所有類型的複寫中。 不過,這個預存程序在散發者端執行。
在執行 sp_adddistributor 之前,您必須先執行 sp_adddistributiondb 來設定散發者。
在執行 sp_adddistributor 之前,先執行 sp_adddistributiondb。
範例
-- 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'AdventureWorks2012';
-- 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 AdventureWorks2012 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_adddistributiondb。
請參閱
參考
sp_changedistributiondb (Transact-SQL)
sp_dropdistributiondb (Transact-SQL)
sp_helpdistributiondb (Transact-SQL)