sp_addlogreader_agent (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

Aggiunge un agente di lettura log per un database specificato. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

Importante

Quando si configura un server di pubblicazione con un server di distribuzione remoto, i valori forniti per tutti i parametri, inclusi @job_login e @job_password, vengono inviati al server di distribuzione come testo normale. È consigliabile crittografare la connessione tra il server di pubblicazione e il server di distribuzione remoto prima di eseguire questa stored procedure. Per ulteriori informazioni, vedere Configurare il motore di database di SQL Server per la crittografia delle connessioni.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @job_login = ] N'job_login'

Account di accesso per l'account di Windows con cui viene eseguito l'agente. @job_login è nvarchar(257), con il valore predefinito NULL. Questo account di Windows viene sempre utilizzato per le connessioni dell'agente al server di distribuzione. In Istanza gestita di SQL di Azure usare un account SQL Server.

Nota

Per i server di pubblicazione non SQL Server, questo deve essere lo stesso account di accesso specificato in sp_adddistpublisher.

[ @job_password = ] N'job_password'

Password per l'account di Windows con cui viene eseguito l'agente. @job_password è sysname, con il valore predefinito NULL.

Importante

Non archiviare le informazioni di autenticazione nei file di script. Per una sicurezza ottimale, i nomi e le password degli account di accesso dovrebbero essere passati in fase di esecuzione.

[ @job_name = ] N'job_name'

Nome di un processo dell'agente esistente. @job_name è sysname, con il valore predefinito NULL. Questo parametro viene specificato solo quando l'agente viene avviato con un processo esistente anziché con un nuovo processo creato (impostazione predefinita).

[ @publisher_security_mode = ] publisher_security_mode

Nota

Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).

Modalità di sicurezza utilizzata dall'agente durante la connessione al server di pubblicazione. @publisher_security_mode è smallint, con il valore predefinito .1 È necessario specificare un valore per i server di 0 pubblicazione non SQL Server. I valori seguenti definiscono la modalità di sicurezza:

  • 0 specifica l'autenticazione di SQL Server.
  • 1specifica autenticazione di Windows.
  • 2 specifica l'autenticazione della password di Microsoft Entra a partire da SQL Server 2022 (16.x) CU 6.
  • 3 specifica l'autenticazione integrata di Microsoft Entra a partire da SQL Server 2022 (16.x) CU 6.
  • 4 specifica l'autenticazione del token Microsoft Entra a partire da SQL Server 2022 (16.x) CU 6.

[ @publisher_login = ] N'publisher_login'

Account di accesso utilizzato per la connessione al server di pubblicazione. @publisher_login è sysname, con un valore predefinito .NULL @publisher_login deve essere specificato quando @publisher_security_mode è 0. Se @publisher_login è NULL e @publisher_security_mode è 1, l'account di Windows specificato in @job_login viene usato per la connessione al server di pubblicazione.

[ @publisher_password = ] N'publisher_password'

Password utilizzata per la connessione al server di pubblicazione. @publisher_password è sysname, con un valore predefinito .NULL

Importante

Non archiviare le informazioni di autenticazione nei file di script. Per una sicurezza ottimale, i nomi e le password degli account di accesso dovrebbero essere passati in fase di esecuzione.

[ @publisher = ] N'publisher'

Nome del server di pubblicazione non SQL Server. @publisher è sysname, con un valore predefinito .NULL

Nota

Non è consigliabile specificare questo parametro per un server di pubblicazione di SQL Server.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_addlogreader_agent viene usato nella replica transazionale.

È necessario eseguire sp_addlogreader_agent per aggiungere un agente di lettura log se è stato aggiornato un database abilitato per la replica a questa versione di SQL Server prima della creazione di una pubblicazione che usava il database.

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o il ruolo predefinito del database db_owner possono eseguire sp_addlogreader_agent.

Esempi

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