sp_addlogreader_agent (Transact-SQL)

適用対象: SQL ServerAzure SQL Managed Instance

データベースにログ リーダー エージェントを追加します。 このストアド プロシージャは、パブリッシャー側のパブリケーション データベースで実行されます。

重要

リモート ディストリビューターを使用してパブリッシャーを構成する場合、@job_loginや@job_passwordを含むすべてのパラメーターに指定された値がプレーン テキストとしてディストリビューターに送信されます。 このストアド プロシージャを実行する前に、パブリッシャーとリモート ディストリビューターの間の接続を暗号化する必要があります。 詳細については、「接続を暗号化するために SQL Server データベース エンジンを構成する」を参照してください。

Transact-SQL 構文表記規則

構文

sp_addlogreader_agent
    [ [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

引数

[ @job_login = ] N'job_login'

エージェントが実行される Microsoft Windows アカウントのログイン。 @job_loginは nvarchar(257) で、既定値は NULL. この Windows アカウントは、ディストリビューターへのエージェント接続に常に使用されます。 Azure SQL Managed Instance では、SQL Server アカウントを使用します。

Note

SQL Server 以外のパブリッシャーの場合、これは sp_adddistpublisher (Transact-SQL)指定されたログインと同じである必要があります。

[ @job_password = ] N'job_password'

エージェントが実行される Windows アカウントのパスワード。 @job_passwordは sysname で、既定値は NULL.

重要

認証情報はスクリプト ファイルに格納しないでください。 セキュリティを最大限に高めるには、実行時にログイン名とパスワードを指定する必要があります。

[ @job_name = ] N'job_name'

既存のエージェント ジョブの名前。 @job_nameは sysname で、既定値は NULL. このパラメーターは、エージェントが新しく作成されたジョブ (既定値) ではなく既存のジョブを使用して開始された場合にのみ指定されます。

[ @publisher_security_mode = ] publisher_security_mode

Note

Microsoft Entra ID は、以前は Azure Active Directory (Azure AD) と呼ばれていました。

パブリッシャーに接続するときにエージェントによって使用されるセキュリティ モード。 @publisher_security_modeは smallint で、既定値は 1. SQL Server 以外の 0 パブリッシャーには値を指定する必要があります。 次の値は、セキュリティ モードを定義します。

  • 0 は SQL Server 認証を指定します。
  • 1はWindows 認証を指定します。
  • 2 は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra パスワード認証を指定します。
  • 3 は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra 統合認証を指定します。
  • 4 は、SQL Server 2022 (16.x) CU 6 以降の Microsoft Entra トークン認証を指定します。

[ @publisher_login = ] N'publisher_login'

パブリッシャーに接続するときに使用されるログイン。 @publisher_loginは sysname で、既定値は NULL. @publisher_security_modeの場合は、@publisher_loginを0指定する必要があります。 @publisher_loginがNULL@publisher_security_modeされている場合1、パブリッシャーに接続するときに、@job_login指定された Windows アカウントが使用されます。

[ @publisher_password = ] N'publisher_password'

パブリッシャーに接続するときに使用するパスワード。 @publisher_passwordは sysname で、既定値は NULL.

重要

認証情報はスクリプト ファイルに格納しないでください。 セキュリティを最大限に高めるには、実行時にログイン名とパスワードを指定する必要があります。

[ @publisher = ] N'publisher'

SQL Server 以外のパブリッシャーの名前。 @publisherは sysname で、既定値は NULL.

Note

SQL Server パブリッシャーには、このパラメーターを指定しないでください。

リターン コードの値

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

解説

sp_addlogreader_agent はトランザクション レプリケーションで使用されます。

データベースを使用するパブリケーションが作成される前に、このバージョンの SQL Server へのレプリケーションが有効になっているデータベースをアップグレードした場合は、ログ リーダー エージェントを追加するために実行 sp_addlogreader_agent する必要があります。

アクセス許可

sysadmin 固定サーバー ロールまたは固定データベース ロールdb_ownerのメンバーのみが実行sp_addlogreader_agentできます。

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. 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".

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- This should be passed at runtime.
SET @password = $(Password); 

-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a new transactional publication with the required properties. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_push = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
GO