sys.sp_addlogreader_agent (Transact-SQL)

Aplica-se a: SQL ServerAzure SQL Managed Instance

Adiciona um agente Log Reader para uma determinada base de dados. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.

Importante

Ao configurar um Publisher com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, incluindo @job_login e @job_password, são enviados ao Distribuidor em texto simples. Deve encriptar a ligação entre o Publisher e o seu Distribuidor remoto antes de executar este procedimento armazenado. Para obter mais informações, consulte Configurar o Mecanismo de Banco de Dados do SQL Server para criptografar conexões.

Transact-SQL convenções de sintaxe

Syntax

sys.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_security_mode = ] job_security_mode ]
[ ; ]

Arguments

[ @job_login = ] N'job_login'

O login da conta Windows com a qual o agente corre. @job_login é nvarchar(257), com um padrão de NULL. Esta conta do Windows é sempre usada para ligações de agentes ao Distribuidor. No Azure SQL Managed Instance, use uma conta SQL Server.

Note

Para editores não SQL Server, este deve ser o mesmo login especificado em sp_adddistpublisher.

[ @job_password = ] N'job_password'

A palavra-passe da conta Windows com a qual o agente corre. @job_password é sysname, com um padrão de NULL.

Importante

Não guarde a informação de autenticação em ficheiros de script. Para a melhor segurança, os nomes de login e palavras-passe devem ser fornecidos em tempo de execução.

[ @job_name = ] N'job_name'

O nome de um agente já existente. @job_name é sysname, com o padrão de NULL. Este 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

Note

Microsoft Entra ID era anteriormente conhecido como Azure Ative Directory (Azure AD).

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

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

[ @publisher_login = ] N'publisher_login'

O login usado ao ligar-se ao Publisher. @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, então a conta Windows especificada em @job_login é usada ao ligar à Publisher.

[ @publisher_password = ] N'publisher_password'

A palavra-passe usada ao ligar-se ao Publisher. @publisher_password é sysname, com um padrão de NULL.

Importante

Não guarde a informação de autenticação em ficheiros de script. Para a melhor segurança, os nomes de login e palavras-passe devem ser fornecidos em tempo de execução.

@publisher [ = ] N'editor'

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

Note

Não deves especificar este parâmetro para um SQL Server Publisher.

[ @job_security_mode = ] job_security_mode

Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Remarks

sp_addlogreader_agent é usado na replicação transacional.

Deve executar sp_addlogreader_agent para adicionar um agente Log Reader se atualizou uma base de dados que estava ativada para replicação para esta versão do SQL Server antes de ser criada uma publicação que utilizasse a base de dados.

Permissions

Apenas os membros do papel de servidor fixo de sysadmin ou do papel de base de dados fixa db_owner podem executar sp_addlogreader_agent.

Examples

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