sp_adddistributiondb (Transact-SQL)
適用対象: SQL ServerAzure SQL Managed Instance
新しいディストリビューション データベースを作成し、ディストリビューター スキーマをインストールします。 ディストリビューション データベースには、レプリケーションで使用されるプロシージャ、スキーマ、およびメタデータが格納されます。 このストアド プロシージャは、ディストリビューション データベースを作成し、レプリケーションディストリビューションを有効にするために必要なテーブルとストアド プロシージャをインストールするために、データベースのディストリビューター master
で実行されます。
構文
sp_adddistributiondb
[ @database = ] N'database'
[ , [ @data_folder = ] N'data_folder' ]
[ , [ @data_file = ] N'data_file' ]
[ , [ @data_file_size = ] data_file_size ]
[ , [ @log_folder = ] N'log_folder' ]
[ , [ @log_file = ] N'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 = ] N'login' ]
[ , [ @password = ] N'password' ]
[ , [ @createmode = ] createmode ]
[ , [ @from_scripting = ] from_scripting ]
[ , [ @deletebatchsize_xact = ] deletebatchsize_xact ]
[ , [ @deletebatchsize_cmd = ] deletebatchsize_cmd ]
[ ; ]
引数
[ @database = ] N'database'
作成するディストリビューション データベースの名前。 @databaseは sysname で、既定値はありません。 指定したデータベースが既に存在し、まだディストリビューション データベースとしてマークされていない場合は、ディストリビューションを有効にするために必要なオブジェクトがインストールされ、データベースはディストリビューション データベースとしてマークされます。 指定したデータベースが、既にディストリビューション データベースとして有効な場合は、エラーが返されます。
[ @data_folder = ] N'data_folder'
ディストリビューション データベース データ ファイルの格納に使用するディレクトリの名前。 @data_folderは nvarchar(255) で、既定値は NULL
. 場合NULL
は、SQL Server のそのインスタンスのデータ ディレクトリが使用されます。たとえば、 C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data
[ @data_file = ] N'data_file'
データベース ファイルの名前 @data_fileは nvarchar(255) で、既定値は NULL
. の場合 NULL
、ストアド プロシージャはデータベース名を使用してファイル名を構築します。
[ @data_file_size = ] data_file_size
初期データ ファイルのサイズ (メガバイト単位 ) (MB (メガバイト))。 @data_file_sizeは int で、既定値は 5
5 MB (メガバイト)です。
[ @log_folder = ] N'log_folder'
データベース ログ ファイルのディレクトリの名前。 @log_folderは nvarchar(255) で、既定値は NULL
. 場合NULL
は、SQL Server のそのインスタンスのデータ ディレクトリが使用されます (たとえば)。 C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data
[ @log_file = ] N'log_file'
ログ ファイルの名前。 @log_fileは nvarchar(255) で、既定値は NULL
. の場合 NULL
、ストアド プロシージャはデータベース名を使用してファイル名を構築します。
[ @log_file_size = ] log_file_size
初期ログ ファイルのサイズ (メガバイト単位 ) (MB (メガバイト))。 @log_file_sizeは int で、既定値は 0
、データベース エンジンで許可されている最小のログ ファイル サイズを使用してファイルを作成します。
[ @min_distretention = ] min_distretention
トランザクションがディストリビューション データベースから削除されるまでの最小保有期間 (時間単位)。 @min_distretentionは int で、既定値は 0
.
[ @max_distretention = ] max_distretention
トランザクションが削除されるまでの最大保有期間 (時間単位)。 @max_distretentionは int で、既定値は 72
. レプリケートされたコマンドを受信しておらず、ディストリビューションの最大保有期間より古いサブスクリプションは非アクティブとしてマークされ、再初期化する必要があります。 非アクティブなサブスクリプションごとにエラー番号 21011 が発行されます。 値は 0
、レプリケートされたトランザクションがディストリビューション データベースに格納されていないことを意味します。
[ @history_retention = ] history_retention
履歴を保持する期間 (時間単位)。 @history_retentionは int で、既定値は 48
2 日間を意味します。
[ @security_mode = ] security_mode
ディストリビューターに接続するときに使用するセキュリティ モード。 @security_modeは int で、既定値は 1
.
0
は SQL Server 認証を指定します1
Windows 認証を指定します
[ @login = ] N'login'
ディストリビューション データベースを作成するためにディストリビューターに接続するときに使用されるログイン名。 @loginは sysname で、既定値は NULL
. @security_modeが に0
設定されている場合は、@loginが必要です。
[ @password = ] N'password'
ディストリビューターに接続するときに使用されるパスワード。 @passwordは sysname で、既定値は NULL
. @security_modeが に設定0
されている場合は、@passwordが必要です。
[ @createmode = ] createmode
@createmodeは int であり、次のいずれかの値を指定できます。
Value | 説明 |
---|---|
0 |
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。 |
1 (既定値) |
CREATE DATABASE または既存のデータベースを使用し、ファイルを instdist.sql 適用してディストリビューション データベースにレプリケーション オブジェクトを作成します。 |
2 |
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。 |
[ @from_scripting = ] from_scripting
単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。
[ @deletebatchsize_xact = ] deletebatchsize_xact
テーブルから期限切れのトランザクションをクリーンアップする際に使用するバッチ サイズをMSRepl_Transactions
指定します。 @deletebatchsize_xactは int で、既定値は 5000
.
適用対象: SQL Server 2012 (11.x) Service Pack 4、SQL Server 2016 (13.x) Service Pack 2、SQL Server 2017 (14.x)、およびそれ以降のバージョン。
[ @deletebatchsize_cmd = ] deletebatchsize_cmd
テーブルから期限切れのコマンドをクリーンに使用するバッチ サイズをMSRepl_Commands
指定します。 @deletebatchsize_cmdは int で、既定値は 2000
.
適用対象: SQL Server 2012 (11.x) Service Pack 4、SQL Server 2016 (13.x) Service Pack 2、SQL Server 2017 (14.x)、およびそれ以降のバージョン。
リターン コードの値
0
(成功) または 1
(失敗)。
解説
sp_adddistributiondb
は、すべての種類のレプリケーションで使用されます。 ただし、このストアド プロシージャは、ディストリビューター側でのみ動作します。
を実行する前に、sp_adddistributorを実行してディストリビューターを構成するsp_adddistributiondb
必要があります。
実行する前に実行 sp_adddistributor
します sp_adddistributiondb
。
例
このスクリプトは SQLCMD スクリプト変数を使用し、SQLCMD モードで実行する必要があります。 変数の形式は次のとおりです $(MyVariable)
。 コマンド ラインと SQL Server Management Studio でスクリプト変数を使用する方法については、「レプリケーション スクリプトの実行」を参照してください。
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'AdventureWorks2022';
-- 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 AdventureWorks2022 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
できます。
関連するコンテンツ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示