sp_addlogreader_agent (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Ajoute un Agent de lecture du journal pour une base de données. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.

Important

Lors de la configuration d’un serveur de publication avec un serveur de distribution distant, les valeurs fournies pour tous les paramètres, y compris @job_login et @job_password, sont envoyées au serveur de distribution sous forme de texte brut. Vous devez chiffrer la connexion entre le serveur de publication et son serveur de distribution distant avant d'exécuter cette procédure stockée. Pour plus d’informations, consultez Configurer le moteur de base de données SQL Server pour le chiffrement des connexions.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @job_login = ] N’job_login'

Connexion pour le compte Microsoft Windows sous lequel l’agent s’exécute. @job_login est nvarchar(257), avec la valeur par défaut NULL. Ce compte Windows est toujours utilisé pour les connexions des agents au serveur de distribution. Sur Azure SQL Managed Instance, utilisez un compte SQL Server.

Remarque

Pour les serveurs de publication non-SQL Server, il doit s’agir de la même connexion spécifiée dans sp_adddistpublisher (Transact-SQL).

[ @job_password = ] N’job_password'

Mot de passe du compte Windows sous lequel l’agent s’exécute. @job_password est sysname, avec la valeur par défaut NULL.

Important

Ne stockez pas les informations d’authentification dans les fichiers de script. Pour une sécurité optimale, les noms de connexion et les mots de passe doivent être fournis au moment de l'exécution.

[ @job_name = ] N’job_name'

Nom d’un travail d’agent existant. @job_name est sysname, avec la valeur par défaut NULL. Ce paramètre n'est défini que lorsque l'Agent est démarré avec un travail existant au lieu d'un nouveau travail (la valeur par défaut).

[ @publisher_security_mode = ] publisher_security_mode

Remarque

L’ID Microsoft Entra était précédemment appelé Azure Active Directory (Azure AD).

Mode de sécurité utilisé par l’agent lors de la connexion au serveur de publication. @publisher_security_mode est smallint, avec une valeur par défaut de 1. Une valeur de 0 doit être spécifiée pour les serveurs de publication non-SQL Server. Les valeurs suivantes définissent le mode de sécurité :

  • 0 spécifie l’authentification SQL Server.
  • 1spécifie Authentification Windows.
  • 2 spécifie l’authentification par mot de passe Microsoft Entra à partir de SQL Server 2022 (16.x) CU 6.
  • 3 spécifie l’authentification intégrée Microsoft Entra à partir de SQL Server 2022 (16.x) CU 6.
  • 4 spécifie l’authentification par jeton Microsoft Entra à partir de SQL Server 2022 (16.x) CU 6.

[ @publisher_login = ] N’publisher_login'

Connexion utilisée lors de la connexion au serveur de publication. @publisher_login est sysname, avec la valeur par défaut NULL. @publisher_login doit être spécifié lorsque @publisher_security_mode est 0. Si @publisher_login est NULL et @publisher_security_mode est 1, le compte Windows spécifié dans @job_login est utilisé lors de la connexion au serveur de publication.

[ @publisher_password = ] N’publisher_password'

Mot de passe utilisé lors de la connexion au serveur de publication. @publisher_password est sysname, avec la valeur par défaut NULL.

Important

Ne stockez pas les informations d’authentification dans les fichiers de script. Pour une sécurité optimale, les noms de connexion et les mots de passe doivent être fournis au moment de l'exécution.

[ @publisher = ] N’publisher'

Nom du serveur de publication non-SQL Server. @publisher est sysname, avec la valeur par défaut NULL.

Remarque

Vous ne devez pas spécifier ce paramètre pour un serveur de publication SQL Server.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Notes

sp_addlogreader_agent est utilisé dans la réplication transactionnelle.

Vous devez exécuter sp_addlogreader_agent pour ajouter un agent de lecture du journal si vous avez mis à niveau une base de données activée pour la réplication vers cette version de SQL Server avant la création d’une publication qui a utilisé la base de données.

Autorisations

Seuls les membres du rôle serveur fixe sysadmin ou le rôle de base de données fixe db_owner peuvent s’exécuter sp_addlogreader_agent.

Exemples

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