Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique explique comment activer la mise à jour des abonnements pour les publications transactionnelles dans SQL Server 2014 à l’aide de SQL Server Management Studio ou de Transact-SQL.
Remarque
Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.
Avant de commencer
Sécurité
Si possible, invitez les utilisateurs à entrer des informations d’identification de sécurité au moment de l’exécution. Si vous devez stocker des informations d’identification dans un fichier de script, vous devez sécuriser le fichier pour empêcher l’accès non autorisé.
Utilisation de SQL Server Management Studio
Activez la mise à jour des abonnements pour les publications transactionnelles depuis la page Type de publication de l’Assistant Nouvelle publication. Pour plus d’informations sur l’utilisation de cet Assistant, consultez Créer une publication. Vous ne pouvez pas activer la mise à jour des abonnements après la création d’une publication.
Pour utiliser la mise à jour des abonnements, vous devez également configurer des options dans l’Assistant Nouvel abonnement. Pour plus d’informations, consultez Créer un abonnement pouvant être mis à jour dans une publication transactionnelle.
Pour activer la mise à jour des abonnements
Dans la page Type de publication de l’Assistant Nouvelle publication, sélectionnez Publication transactionnelle avec des abonnements pouvant être mis à jour.
Dans la page Sécurité de l’agent , spécifiez les paramètres de sécurité de l’Agent de lecture de file d’attente en plus de l’Agent d’instantané et de l’Agent de lecture du journal. Pour plus d’informations sur les autorisations requises pour le compte sous lequel l’Agent de lecture de file d’attente s’exécute, consultez le modèle de sécurité de l’agent de réplication.
Remarque
L’Agent de lecture de file d’attente est configuré même si vous utilisez uniquement des abonnements de mise à jour immédiate.
Utilisation de Transact-SQL
Lors de la création d'une publication transactionnelle par programmation à l'aide de procédures stockées de réplication, vous pouvez activer des abonnements de mise à jour immédiate ou mise à jour en file d'attente.
Pour créer une publication qui prend en charge les abonnements à mise à jour immédiate
Si nécessaire, créez un travail de l’agent de lecture des journaux pour la base de données de publication.
Si une tâche de l’Agent de lecture du journal existe déjà pour la base de données de publication, passez à l’étape 2.
Si vous ne savez pas si un Agent de lecture du journal existe pour une base de données publiée, exécutez sp_helplogreader_agent (Transact-SQL) sur le serveur de publication sur la base de données de publication. Si l'ensemble de résultats est vide, on doit créer une tâche pour l’Agent de lecture des journaux.
Sur l’éditeur, exécutez sp_addlogreader_agent (Transact-SQL). Spécifiez les informations d’identification Microsoft Windows sous lesquelles l’agent s’exécute pour @job_name et @password. Si l’agent utilise l’authentification SQL Server lors de la connexion au serveur de publication, vous devez également spécifier la valeur 0 pour @publisher_security_mode et les informations de connexion Microsoft SQL Server pour @publisher_login et @publisher_password.
Exécutez sp_addpublication (Transact-SQL), en spécifiant une valeur true pour le paramètre @allow_sync_tran.
À l'éditeur, exécutez sp_addpublication_snapshot (Transact-SQL). Spécifiez le nom de publication utilisé à l’étape 2 pour @publication et les informations d’identification Windows sous lesquelles l’Agent d’instantané s’exécute pour @job_name et @password. Si l’agent utilise l’authentification SQL Server lors de la connexion au serveur de publication, vous devez également spécifier la valeur 0 pour @publisher_security_mode et les informations de connexion SQL Server pour @publisher_login et @publisher_password. Cela crée un travail de l’Agent d’instantané pour la publication.
Ajoutez des articles à la publication. Pour plus d’informations, consultez Définir un article.
Dans l'interface Abonné, créez un abonnement de suivi pour cette publication. Pour plus d’informations, consultez Créer un abonnement pouvant être mis à jour dans une publication transactionnelle.
Pour créer une publication qui prend en charge les abonnements de mise à jour en file d’attente
Si nécessaire, créez une tâche de l’Agent de lecture des journaux pour la base de données de publication.
Si une tâche de l’Agent de lecture des journaux existe déjà pour la base de données de publication, passez à l’étape 2.
Si vous ne savez pas si une tâche de l’Agent de lecture du journal existe pour une base de données publiée, exécutez sp_helplogreader_agent (Transact-SQL) à partir de la base de données de publication. Si le jeu de résultats est vide, une tâche d’Agent de lecture de journal doit être créée.
Sur l’éditeur, exécutez sp_addlogreader_agent (Transact-SQL). Spécifiez les informations d’identification Windows sous lesquelles l’agent s’exécute pour @job_name et @password. Si l’agent utilise l’authentification SQL Server lors de la connexion au serveur de publication, vous devez également spécifier la valeur 0 pour @publisher_security_mode et les informations de connexion SQL Server pour @publisher_login et @publisher_password.
Si nécessaire, créez un travail d'agent de lecture de file d’attente pour le serveur de distribution.
Si une tâche de l’Agent de lecture de file d’attente existe déjà pour la base de données de distribution, passez à l’étape 3.
Si vous ne savez pas si une tâche de l’Agent de lecture de file d’attente existe pour la base de données de distribution, exécutez sp_helpqreader_agent (Transact-SQL) au niveau du serveur de distribution sur la base de données de distribution. Si le jeu de résultats est vide, un travail pour l'agent de lecture de file d'attente doit être créé.
Sur le serveur de distribution, exécutez sp_addqreader_agent (Transact-SQL). Spécifiez les informations d’identification Windows sous lesquelles l’agent s’exécute pour @job_name et @password. Ces informations d’identification sont utilisées lorsque l’Agent de lecture de file d’attente se connecte au serveur de publication et à l’abonné. Pour plus d’informations, consultez Le modèle de sécurité de l’agent de réplication.
Exécutez sp_addpublication (Transact-SQL), en spécifiant une valeur vrai pour le paramètre @allow_queued_tran et une valeur de pub remporte, sous réinitialise ou sous remporte pour @conflict_policy.
À l'éditeur, exécutez sp_addpublication_snapshot (Transact-SQL). Spécifiez le nom de publication utilisé à l’étape 3 pour @publication et les informations d’identification Windows sous lesquelles l’Agent d’instantané s’exécute pour @snapshot_job_name et @password. Si l’agent utilise l’authentification SQL Server lors de la connexion au serveur de publication, vous devez également spécifier la valeur 0 pour @publisher_security_mode et les informations de connexion SQL Server pour @publisher_login et @publisher_password. Cela crée un travail de l’Agent d’instantané pour la publication.
Ajoutez des articles à la publication. Pour plus d’informations, consultez Définir un article.
Au niveau de l'abonné, créez un abonnement de mise à jour pour cette publication. Pour plus d’informations, consultez Créer un abonnement pouvant être mis à jour dans une publication transactionnelle.
Pour modifier la stratégie de conflit pour une publication qui autorise la mise à jour en file d’attente des abonnements
- Chez l'éditeur, dans la base de données de publication, exécutez sp_changepublication(Transact-SQL). Spécifiez une valeur de conflict_policy pour @property et le mode de stratégie de conflit souhaité pour publication gagnante,réinitialisation de souscription ou souscription gagnante pour @value.
Exemple (Transact-SQL)
Cet exemple crée une publication qui a pris en charge les abonnements collecteurs de mise à jour immédiate et mise en file d’attente.
-- 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".
--Declarations for adding a transactional publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2012';
SET @publication = N'AdvWorksProductTran';
SET @login = $(Login);
SET @password = $(Password);
USE [AdventureWorks]
-- Enable transactional 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 transactional publication that supports immediate updating,
-- queued updating, and pull subscriptions.
EXEC sp_addpublication
@publication = @publication,
@status = N'active',
@allow_sync_tran = N'true',
@allow_queued_tran = N'true',
@allow_pull = N'true',
@independent_agent = N'true',
-- Explicitly declare the related default properties
@conflict_policy = N'pub wins';
-- 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
--Declarations for adding an article.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @owner = N'Production';
-- Add a horizontally and vertically filtered article for the Product table.
USE [AdventureWorks2012]
EXEC sp_addarticle
@publication = @publication,
@article = @article,
@source_table = @article,
@vertical_partition = N'false',
@type = N'logbased',
@source_owner = @owner,
@destination_owner = @owner;
GO
Voir aussi
Définir les options de résolution des conflits de mise à jour en attente (SQL Server Management Studio)
Types de publication pour la réplication transactionnelle
Abonnements pouvant être mis à jour pour la réplication transactionnelle
Créer une publication
Créer un abonnement modifiable à une publication transactionnelle
Abonnements pouvant être mis à jour pour la réplication transactionnelle
Utiliser sqlcmd avec des variables de script