パブリッシングとディストリビューションを構成する方法 (レプリケーション Transact-SQL プログラミング)

レプリケーションのパブリッシングおよびディストリビューションは、レプリケーションのストアド プロシージャを使用してプログラムから構成できます。

ローカル ディストリビュータを使用してパブリッシングを構成するには

  1. sp_get_distributor (Transact-SQL) を実行して、サーバーが既にディストリビュータとして構成されているかどうかを調べます。

    • 結果セットの installed の値が 0 の場合は、ディストリビュータの master データベースで sp_adddistributor (Transact-SQL) を実行します。

    • 結果セットの distribution db installed の値が 0 の場合は、ディストリビュータの master データベースで sp_adddistributiondb (Transact-SQL) を実行します。このとき、@database に、ディストリビューション データベースの名前を指定します。必要に応じて、トランザクションの最大保有期間 (@max_distretention) および履歴保有期間 (@history_retention) を指定することもできます。新しいデータベースを作成する場合は、必要なデータベース プロパティのパラメータを指定します。

  2. ディストリビュータ (兼パブリッシャ) で、sp_adddistpublisher (Transact-SQL) を実行します。このとき、@working_directory には、既定のスナップショット フォルダとして使用する UNC 共有を指定します。

  3. パブリッシャで、sp_replicationdboption (Transact-SQL) を実行します。このとき、@dbname にはパブリッシュするデータベースを、@optname にはレプリケーションの種類を、@value の値には true を指定します。

リモート ディストリビュータを使用してパブリッシングを構成するには

  1. sp_get_distributor (Transact-SQL) を実行して、サーバーが既にディストリビュータとして構成されているかどうかを調べます。

    • 結果セットの installed の値が 0 の場合は、ディストリビュータの master データベースで sp_adddistributor (Transact-SQL) を実行します。@password には強力なパスワードを指定してください。この distributor_admin アカウントのパスワードは、パブリッシャがディストリビュータに接続する際に使用されます。

    • 結果セットの distribution db installed の値が 0 の場合は、ディストリビュータの master データベースで sp_adddistributiondb (Transact-SQL) を実行します。このとき、@database に、ディストリビューション データベースの名前を指定します。必要に応じて、トランザクションの最大保有期間 (@max_distretention) および履歴保有期間 (@history_retention) を指定することもできます。新しいデータベースを作成する場合は、必要なデータベース プロパティのパラメータを指定します。

  2. ディストリビュータで、sp_adddistpublisher (Transact-SQL) を実行します。このとき、@working_directory には、既定のスナップショット フォルダとして使用する UNC 共有を指定します。ディストリビュータがパブリッシャに接続する際に SQL Server 認証を使用する場合、さらに @security_mode0 を指定し、@login@password に MicrosoftSQL Server ログイン情報を指定する必要があります。

  3. パブリッシャの master データベースで sp_adddistributor (Transact-SQL) を実行します。@password には、手順 1. で使用した強力なパスワードを指定してください。このパスワードは、パブリッシャがディストリビュータに接続する際に使用されます。

  4. パブリッシャで、sp_replicationdboption (Transact-SQL) を実行します。このとき、@dbname にはパブリッシュするデータベースを、@optname にはレプリケーションの種類を、@value の値には true を指定します。

使用例

次の例に、パブリッシングおよびディストリビューションをプログラムから構成する方法を示します。この例では、パブリッシャおよびローカル ディストリビュータとして構成するサーバーの名前をスクリプト変数を使って指定しています。

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