sp_addlogreader_agent (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Fügt einen Protokolllese-Agent für eine bestimmte Datenbank hinzu. Diese gespeicherte Prozedur wird im Publisher in der Publikationsdatenbank ausgeführt.

Wichtig

Beim Konfigurieren eines Herausgebers mit einem Remoteverteiler werden die für alle Parameter bereitgestellten Werte, einschließlich @job_login und @job_password, als Nur-Text an den Distributor gesendet. Sie sollten die Verbindung zwischen dem Verleger und dem zugehörigen Remoteverteiler verschlüsseln, bevor Sie diese gespeicherte Prozedur ausführen. Weitere Informationen finden Sie unter Konfigurieren der SQL Server-Datenbank-Engine zum Verschlüsseln von Verbindungen.

Transact-SQL-Syntaxkonventionen

Syntax

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' ]
[ ; ]

Argumente

[ @job_login = ] N'job_login'

Die Anmeldung für das Microsoft Windows-Konto, unter dem der Agent ausgeführt wird. @job_login ist nvarchar(257), mit einem Standardwert von NULL. Das Windows-Konto wird stets für Agent-Verbindungen mit dem Verteiler verwendet. Verwenden Sie in Azure SQL verwaltete Instanz ein SQL Server-Konto.

Hinweis

Bei Nicht-SQL Server-Herausgebern muss dies dieselbe Anmeldung sein, die in sp_adddistpublisher (Transact-SQL) angegeben ist.

[ @job_password = ] N'job_password'

Das Kennwort für das Windows-Konto, unter dem der Agent ausgeführt wird. @job_password ist "sysname" mit der Standardeinstellung "NULL.

Wichtig

Speichern Sie keine Authentifizierungsinformationen in Skriptdateien. Für die optimale Sicherheit sollten Anmeldenamen und Kennwörter zur Laufzeit bereitgestellt werden.

[ @job_name = ] N'job_name'

Der Name eines vorhandenen Agentenauftrags. @job_name ist "sysname" mit der Standardeinstellung "NULL. Dieser Parameter wird nur dann angegeben, wenn der Agent mit einem vorhandenen Auftrag anstatt mit einem neu erstellten Auftrag (Standard) gestartet wird.

[ @publisher_security_mode = ] publisher_security_mode

Hinweis

Microsoft Entra-ID wurde zuvor als Azure Active Directory (Azure AD) bezeichnet.

Der vom Agent beim Herstellen einer Verbindung mit dem Publisher verwendete Sicherheitsmodus. @publisher_security_mode ist klein, mit einem Standardwert von 1. Für Nicht-SQL Server-Herausgeber muss ein Wert 0 angegeben werden. Die folgenden Werte definieren den Sicherheitsmodus:

  • 0 Gibt die SQL Server-Authentifizierung an.
  • 1gibt Windows-Authentifizierung an.
  • 2 Gibt die Microsoft Entra-Kennwortauthentifizierung ab SQL Server 2022 (16.x) CU 6 an.
  • 3 Gibt die integrierte Microsoft Entra-Authentifizierung ab SQL Server 2022 (16.x) CU 6 an.
  • 4 Gibt die Microsoft Entra-Tokenauthentifizierung ab SQL Server 2022 (16.x) CU 6 an.

[ @publisher_login = ] N'publisher_login'

Der Anmeldename, der beim Herstellen einer Verbindung mit dem Verleger verwendet wird @publisher_login ist "sysname" mit einem Standardwert von NULL. @publisher_login muss angegeben werden, wenn @publisher_security_mode ist0. Wenn @publisher_login ist NULL und @publisher_security_mode ist 1, wird das in @job_login angegebene Windows-Konto beim Herstellen einer Verbindung mit publisher verwendet.

[ @publisher_password = ] N'publisher_password'

Das Kennwort, das beim Herstellen einer Verbindung mit dem Publisher verwendet wird. @publisher_password ist "sysname" mit einem Standardwert von NULL.

Wichtig

Speichern Sie keine Authentifizierungsinformationen in Skriptdateien. Für die optimale Sicherheit sollten Anmeldenamen und Kennwörter zur Laufzeit bereitgestellt werden.

[ @publisher = ] N'publisher'

Der Name des Nicht-SQL Server-Herausgebers. @publisher ist "sysname" mit der Standardeinstellung "NULL.

Hinweis

Sie sollten diesen Parameter für einen SQL Server Publisher nicht angeben.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_addlogreader_agent wird in der Transaktionsreplikation verwendet.

Sie müssen ausgeführt werden sp_addlogreader_agent , um einen Log Reader-Agent hinzuzufügen, wenn Sie eine Datenbank aktualisiert haben, die für die Replikation auf diese Version von SQL Server aktiviert war, bevor eine Publikation erstellt wurde, die die Datenbank verwendet hat.

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin oder die db_owner feste Datenbankrolle können ausgeführt werden sp_addlogreader_agent.

Beispiele

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