sp_adddistributiondb (Transact-SQL)

新しいディストリビューション データベースを作成し、ディストリビュータ スキーマをインストールします。ディストリビューション データベースには、レプリケーションで使用されるプロシージャ、スキーマ、およびメタデータが格納されます。このストアド プロシージャは、master データベース上のディストリビュータ側で実行され、ディストリビューション データベースを作成して、レプリケーション ディストリビューションの有効化に必要なテーブルおよびストアド プロシージャをインストールします。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

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 の場合、その MicrosoftSQL Server インスタンスのデータ ディレクトリ、たとえば C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data が使用されます。

  • [ [ @data_file=] 'data_file'
    データベース ファイルの名前を指定します。data_file のデータ型は nvarchar(255) で、既定値は database です。NULL を指定した場合、このストアド プロシージャではデータベース名を使用してファイル名が生成されます。

  • [ [ @data_file_size=] data_file_size
    データ ファイルの初期サイズをメガバイト (MB) 単位で指定します。data_file_size のデータ型は int で、既定値は 5 MB です。

  • [ [ @log_folder=] 'log_folder'
    データベース ログ ファイルを格納するディレクトリの名前を指定します。log_folder のデータ型は nvarchar(255) で、既定値は NULL です。NULL の場合、その SQL Server インスタンスのデータ ディレクトリ、たとえば C:\Program Files\Microsoft SQL Server\MSSQL10.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_adddistributiondb を実行する前に、sp_adddistributor を実行してディストリビュータを構成する必要があります。

sp_adddistributiondb を実行する前に sp_adddistributor を実行してください。

使用例

-- 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 

権限

sp_adddistributiondb を実行できるのは、sysadmin 固定サーバー ロールのメンバだけです。