次の方法で共有


sp_adddistributor (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

sys.servers テーブルにエントリを作成し (存在しない場合)、サーバー エントリをディストリビューターとしてマークし、プロパティ情報を格納します。 このストアド プロシージャは、 master データベースのディストリビューターで実行され、サーバーをディストリビューターとして登録してマークします。 リモート ディストリビューターの場合、リモート ディストリビューターを登録するために、 master データベースからパブリッシャーでも実行されます。

Transact-SQL 構文表記規則

構文

sp_adddistributor
    [ @distributor = ] N'distributor'
    [ , [ @heartbeat_interval = ] heartbeat_interval ]
    [ , [ @password = ] N'password' ]
    [ , [ @from_scripting = ] from_scripting ]
    [ , [ @encrypt_distributor_connection = ] N'encrypt_distributor_connection' ]
    [ , [ @trust_distributor_certificate = ] N'trust_distributor_certificate' ]
    [ , [ @host_name_in_distributor_certificate = ] N'host_name_in_distributor_certificate' ]
[ ; ]

引数

[ @distributor = ] N'distributor'

配布サーバー名。 @distributorsysname で、既定値はありません。 このパラメーターは、リモート ディストリビューターを設定する場合にのみ使用します。 msdb..MSdistributor テーブルのディストリビューター プロパティのエントリを追加します。

Note

サーバー名は、既定のインスタンスの <Hostname>,<PortNumber> として指定することも、名前付きインスタンスの <Hostname>\<InstanceName>,<PortNumber> として指定することもできます。 SQL Server がカスタム ポートを使用して Linux または Windows にデプロイされ、ブラウザー サービスが無効になっている場合に、接続のポート番号を指定します。 リモート ディストリビューターのカスタム ポート番号の使用は、SQL Server 2019 (15.x) 以降のバージョンに適用されます。

[ @heartbeat_interval = ] heartbeat_interval

進行状況メッセージをログに記録せずにエージェントが実行できる最大時間 (分)。 @heartbeat_intervalint で、既定値は 10 分です。 実行中のレプリケーション エージェントの状態を確認するために、この間隔で実行されるSQL Server エージェント ジョブが作成されます。

[ @password = ] N'password'

distributor_admin ログインのパスワード。 @passwordsysname で、既定値は NULL です。 パスワードが NULL または空の文字列の場合、 @password はランダムな値にリセットされます。 パスワードは最初のリモート ディストリビューターを追加するときに構成する必要があります。 distributor_admin ログインと @password は、ローカル接続を含む、 distributor RPC 接続に使用されるリンク サーバー エントリに格納されます。 distributorがローカルの場合、distributor_adminのパスワードは新しい値に設定されます。 リモート ディストリビューターを使用するパブリッシャーの場合は、パブリッシャーとディストリビューターの両方でを実行するときに、sp_adddistributorに同じ値を指定する必要があります。 sp_changedistributor_password を使用してディストリビューターのパスワードを変更できます。

重要

可能であれば、実行時、ユーザーに対してセキュリティ資格情報の入力を要求します。 スクリプト ファイルに資格情報を格納する必要がある場合は、不正アクセスを防ぐために、ファイルを保護します。

[ @from_scripting = ] from_scripting

@from_scriptingbit で、既定値は 0 です。 単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

[ @encrypt_distributor_connection = ] N'encrypt_distributor_connection'

適用対象: SQL Server 2025 (17.x) プレビュー以降のバージョン。

パブリッシャーからディストリビューターへの内部リンク サーバー接続を暗号化するかどうかを決定します。 値は、OLE DB プロバイダーの Encrypt プロパティにマップされます。 @encrypt_distributor_connectionnvarchar(10)であり、 NULLすることはできません。

@encrypt_distributor_connection には、次のいずれかの値を指定できます。

  • mandatory (Microsoft OLE DB プロバイダー 19 の既定値)
  • no または false (Microsoft OLE DB プロバイダー 18 では既定)
  • true または yes
  • optional
  • strict

[ @trust_distributor_certificate = ] N'trust_distributor_certificate'

適用対象: SQL Server 2025 (17.x) プレビュー以降のバージョン。

ディストリビューターの TLS 証明書を検証なしで信頼する必要があるかどうかを示します。 値は OLE DB プロバイダーの TrustServerCertificate プロパティにマップされ、通常は自己署名証明書を使用する場合に Mandatory 暗号化設定と組み合わせて使用されます。 @trust_distributor_certificatenvarchar(5)であり、 NULLすることはできません。

@trust_distributor_certificate には、次のいずれかの値を指定できます。

  • no (既定値)
  • yes

Note

セキュリティで保護された既定値は、セキュリティを強化する基になる OLEDB プロバイダー 19 に関連します。 既定値をオーバーライドするオプションは、信頼された証明書を使用するようにインスタンスを構成するよりも安全性が低くなります。 既定値をオーバーライドした後、証明書を使用するように SQL Server を構成し、 sp_changedistributor_property ストアド プロシージャを使用して、 trust_distributor_certificate=no プロパティをセキュリティで保護された既定値に戻すオプションがあります。

[ @host_name_in_distributor_certificate = ] N'host_name_in_distributor_certificate'

適用対象: SQL Server 2025 (17.x) プレビュー以降のバージョン。

ディストリビューター名と異なる場合 (IP アドレスまたは DNS エイリアスをディストリビューター名として使用する場合など) に、ディストリビューターの証明書のホスト名を指定します。 証明書のホスト名がディストリビューター名と一致する場合は、 @host_name_in_distributor_certificate パラメーターを空のままにします。 @host_name_in_distributor_certificate は任意の文字列値の nvarchar(255) で、既定値は NULL です。

リターン コードの値

0 (成功) または 1 (失敗)。

解説

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

自己署名証明書を信頼するようにディストリビューターを構成する

OLEDB 19 プロバイダーのセキュリティで保護された既定値をオーバーライドし、ディストリビューターが自己署名証明書を信頼するように trust_distributor_certificate=yes 設定するには、次の例を使用します。

EXECUTE sys.sp_adddistributor @trust_distributor_certificate = 'yes';

Note

セキュリティで保護された既定値は、セキュリティを強化する基になる OLEDB プロバイダー 19 に関連します。 既定値をオーバーライドするオプションは、信頼された証明書を使用するようにインスタンスを構成するよりも安全性が低くなります。 既定値をオーバーライドした後、証明書を使用するように SQL Server を構成し、 sp_changedistributor_property ストアド プロシージャを使用して、 trust_distributor_certificate=no プロパティをセキュリティで保護された既定値に戻すオプションがあります。

詳細については、 SQL Server 2025 プレビューでのリモート ディストリビューターの破壊的変更を確認してください。

アクセス許可

sysadmin固定サーバー ロールのメンバーのみがsp_adddistributorを実行できます。