次の方法で共有


sp_adddistpublisher (Transact-SQL)

適用対象: SQL Server Azure SQL Managed Instance

指定されたディストリビューション データベースを使用するように、パブリッシャーを構成します。 このストアド プロシージャは、任意のデータベースのディストリビューターで実行されます。 ストアド プロシージャの sp_adddistributorsp_adddistributiondb は、このストアド プロシージャを使用する前に実行しておく必要があります。

Transact-SQL 構文表記規則

構文

sp_adddistpublisher
    [ @publisher = ] N'publisher'
    , [ @distribution_db = ] N'distribution_db'
    [ , [ @security_mode = ] security_mode ]
    [ , [ @login = ] N'login' ]
    [ , [ @password = ] N'password' ]
    [ , [ @working_directory = ] N'working_directory' ]
    [ , [ @trusted = ] N'trusted' ]
    [ , [ @encrypted_password = ] encrypted_password ]
    [ , [ @thirdparty_flag = ] thirdparty_flag ]
    [ , [ @publisher_type = ] N'publisher_type' ]
    [ , [ @storage_connection_string = ] N'storage_connection_string' ]
[ ; ]

引数

[ @publisher = ] N'publisher'

パブリッシャー名。 @publishersysname で、既定値はありません。

Note

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

[ @distribution_db = ] N'distribution_db'

ディストリビューション データベースの名前。 @distribution_dbsysname で、既定値はありません。 このパラメーターは、レプリケーション エージェントがパブリッシャーに接続するために使用します。

[ @security_mode = ] security_mode

実装されたセキュリティ モード。 このパラメーターは、キュー更新サブスクリプションまたは SQL Server 以外のパブリッシャーを使用してパブリッシャーに接続するために、レプリケーション エージェントによってのみ使用されます。 @security_modeint であり、これらの値のいずれかを指定できます。

Value 説明
0 ディストリビューターのレプリケーション エージェントは、SQL Server 認証を使用してパブリッシャーに接続します。
1 (既定) ディストリビューター側のレプリケーション エージェントは Windows 認証を使用してパブリッシャーに接続します。

[ @login = ] N'login'

ログイン。 このパラメーターは、 security_mode0場合に必要です。 @loginsysname で、既定値は NULL です。 このパラメーターは、レプリケーション エージェントがパブリッシャーに接続するために使用します。

[ @password = ] N'password'

パスワード。 @passwordsysname で、既定値は NULL です。 このパラメーターは、レプリケーション エージェントがパブリッシャーに接続するために使用します。

重要

空白のパスワードを使用しないでください。 強力なパスワードを使用してください。

[ @working_directory = ] N'working_directory'

パブリケーションのデータ ファイルとスキーマ ファイルを格納するために使用される作業ディレクトリの名前。 @working_directorynvarchar(255)であり、既定では SQL Server のこのインスタンスの ReplData フォルダーに設定されます。 たとえば、C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.1\ReplData のようにします。 名前は UNC 形式で指定する必要があります。

Azure SQL Database の場合は、 \\<storage_account>.file.core.windows.net\<share>を使用します。

[ @trusted = ] N'trusted'

@trusted は非推奨であり、下位互換性のみを目的として提供されています。 @trustednvarchar(5) で、既定値は false です。 このパラメーターを false 以外に設定すると、エラーが発生します。

[ @encrypted_password = ] encrypted_password

このパラメーターの設定はサポートされなくなりました。 @encrypted_passwordbit で、既定値は 0 です。 このパラメーターを 1 に設定すると、エラーが発生します。

[ @thirdparty_flag = ] thirdparty_flag

パブリッシャーが SQL Server の場合を指定します。 @thirdparty_flagビットであり、次のいずれかの値を指定できます。

Value 説明
0 (既定値) SQL Server データベース。
1 SQL Server 以外のデータベース。

[ @publisher_type = ] N'publisher_type'

パブリッシャーが SQL Server でない場合のパブリッシャーの種類を指定します。 @publisher_typesysname で、次のいずれかの値を指定できます。

Value 説明
MSSQLSERVER (既定値) SQL Server パブリッシャーを指定します。
ORACLE 標準の Oracle パブリッシャーを指定します。
ORACLE GATEWAY Oracle ゲートウェイ パブリッシャーを指定します。

Oracle パブリッシャーと Oracle ゲートウェイ パブリッシャーの違いの詳細については、「 Oracle パブリッシャーの構成を参照してください。

[ @storage_connection_string = ] N'storage_connection_string'

Azure SQL Database に必要です。 @storage_connection_stringnvarchar(255) で、既定値は NULL です。 Storage >設定で、Azure portal からアクセス キーを使用します。

Note

Azure SQL Database のパブリッシャー データベースとディストリビューター データベースには、 SQL Managed Instanceが必要です。 詳細については、「 Azure SQL Database での複製」を参照してください。

リターン コードの値

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

解説

sp_adddistpublisher は、スナップショット レプリケーション、トランザクション レプリケーション、マージ レプリケーションで使用されます。

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

アクセス許可

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