sp_addlogreader_agent (Transact-SQL)

Aplica-se a:SQL ServerInstância Gerenciada de SQL do Azure

Adiciona um Log Leitor Agent a um determinado banco de dados. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.

Importante

Ao configurar um Publicador com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, incluindo @job_login e @job_password, são enviados ao Distribuidor como texto sem formatação. Você deve criptografar a conexão entre o Publicador e seu Distribuidor remoto antes de executar esse procedimento armazenado. Para obter mais informações, confira Configurar o Mecanismo de Banco de Dados do SQL Server para criptografia de conexões.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

@job_login [ = ] N'job_login'

O logon para a conta do Microsoft Windows sob a qual o agente é executado. @job_login é nvarchar(257), com um padrão de NULL. Essa conta do Windows sempre é usada para conexões de agente com o Distribuidor. Na Instância Gerenciada SQL do Azure, use uma conta do SQL Server.

Observação

Para Publicadores que não sejam do SQL Server, esse deve ser o mesmo logon especificado no sp_adddistpublisher (Transact-SQL).

@job_password [ = ] N'job_password'

A senha da conta do Windows sob a qual o agente é executado. @job_password é sysname, com um padrão de NULL.

Importante

Não armazene informações de autenticação em arquivos de script. Para melhor segurança, nomes de logon e senhas devem ser fornecidos em runtime.

@job_name [ = ] N'job_name'

O nome de um trabalho de agente existente. @job_name é sysname, com um padrão de NULL. Esse parâmetro só é especificado quando o agente é iniciado usando um trabalho existente em vez de um trabalho recém-criado (o padrão).

@publisher_security_mode [ = ] publisher_security_mode

Observação

A ID do Microsoft Entra era anteriormente conhecida como Azure Active Directory (Azure AD).

O modo de segurança usado pelo agente ao se conectar ao Publicador. @publisher_security_mode é smallint, com um padrão de 1. Um valor de deve ser especificado para Publicadores que não sejam do 0 SQL Server. Os seguintes valores definem o modo de segurança:

  • 0 especifica a autenticação do SQL Server.
  • 1 especifica a autenticação do Windows.
  • 2 especifica a autenticação de senha do Microsoft Entra a partir do SQL Server 2022 (16.x) 6.
  • 3 especifica a autenticação integrada do Microsoft Entra a partir do SQL Server 2022 (16.x) 6.
  • 4 especifica a autenticação de token do Microsoft Entra a partir do SQL Server 2022 (16.x) 6.

@publisher_login [ = ] N'publisher_login'

O logon usado na conexão com o Publicador. @publisher_login é sysname, com um padrão de NULL. @publisher_login deve ser especificado quando @publisher_security_mode é 0. Se @publisher_login for NULL e @publisher_security_mode for 1, a conta do Windows especificada em @job_login será usada ao se conectar ao Publicador.

@publisher_password [ = ] N'publisher_password'

A senha usada ao se conectar ao Publicador. @publisher_password é sysname, com um padrão de NULL.

Importante

Não armazene informações de autenticação em arquivos de script. Para melhor segurança, nomes de logon e senhas devem ser fornecidos em runtime.

@publisher [ = ] N'editor'

O nome do Publicador não-SQL Server. @publisher é sysname, com um padrão de NULL.

Observação

Você não deve especificar esse parâmetro para um SQL Server Publisher.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_addlogreader_agent é usado na replicação transacional.

Você deve executar sp_addlogreader_agent para adicionar um agente Leitor de Log se você atualizou um banco de dados que foi habilitado para replicação para esta versão do SQL Server antes da criação de uma publicação que usou o banco de dados.

Permissões

Somente membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner podem executar sp_addlogreader_agent.

Exemplos

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