Partager via


Actualiser les scripts de réplication (Programmation de la réplication Transact-SQL)

Transact-SQL fichiers de script peuvent être utilisés pour configurer par programme une topologie de réplication. Pour plus d’informations, consultez Concepts des procédures stockées du système de réplication.

Important

Même si vous n’êtes pas obligé de mettre à niveau des scripts exécutés par des membres du sysadmin rôle, nous vous recommandons de modifier les scripts existants comme décrit dans cette rubrique. Spécifiez un compte disposant d’autorisations minimales pour chaque agent de réplication, comme décrit dans la section « Autorisations requises par les agents » de la rubrique Modèle de sécurité de l’agent de réplication.

Ces améliorations de sécurité, qui permettent un contrôle accru des autorisations en vous permettant de spécifier explicitement les comptes Microsoft Windows sous lesquels les travaux de l’agent de réplication sont exécutés, affectent les procédures stockées suivantes dans les scripts existants :

  • sp_addpublication_snapshot :

    Vous devez maintenant fournir les informations d’identification Windows en tant que @job_login et @job_password lors de l’exécution de sp_addpublication_snapshot (Transact-SQL) pour créer le travail sous lequel l’Agent d’instantané s’exécute sur le serveur de distribution.

  • sp_addpushsubscription_agent :

    Vous devez maintenant exécuter sp_addpushsubscription_agent (Transact-SQL) pour ajouter explicitement un travail et fournir les informations d’identification Windows (@job_login et @job_password) sous lesquelles le travail de l’Agent de distribution s’exécute sur le serveur de distribution. Dans les versions de SQL Server antérieures à SQL Server 2005, cette opération a été effectuée automatiquement lors de la création d’un abonnement Push.

  • sp_addmergepushsubscription_agent :

    Vous devez maintenant exécuter sp_addmergepushsubscription_agent (Transact-SQL) pour ajouter explicitement un travail et fournir les informations d’identification Windows (@job_login et @job_password) sous lesquelles le travail de l’Agent de fusion s’exécute sur le serveur de distribution. Dans les versions de SQL Server antérieures à SQL Server 2005, cette opération a été effectuée automatiquement lors de la création d’un abonnement Push.

  • sp_addpullsubscription_agent :

    Vous devez maintenant fournir les informations d’identification Windows en tant que @job_login et @job_password lors de l’exécution de sp_addpullsubscription_agent (Transact-SQL) pour créer le travail sous lequel l’Agent de distribution s’exécute sur l’Abonné.

  • sp_addmergepullsubscription_agent :

    Vous devez maintenant fournir les informations d’identification Windows en tant que @job_login et @job_password lors de l’exécution de sp_addmergepullsubscription_agent (Transact-SQL) pour créer le travail sous lequel l’Agent de fusion s’exécute sur l’Abonné.

  • sp_addlogreader_agent :

    Vous devez maintenant exécuter sp_addlogreader_agent (Transact-SQL) pour ajouter manuellement la tâche et fournir les identifiants Windows sous lesquels l’Agent de lecture du journal fonctionne sur le serveur de distribution. Dans les versions de SQL Server antérieures à SQL Server 2005, cette opération a été effectuée automatiquement lors de la création d’une publication transactionnelle.

  • sp_addqreader_agent :

    Vous devez maintenant exécuter sp_addqreader_agent (Transact-SQL) pour ajouter manuellement le travail et fournir les informations d’identification Windows sous lesquelles l’Agent de lecture de file d’attente s’exécute sur le serveur de distribution. Dans les versions de SQL Server antérieures à SQL Server 2005, cette opération a été effectuée automatiquement lorsqu’une publication transactionnelle qui a pris en charge la mise à jour en file d’attente a été créée.

Dans le modèle de sécurité introduit dans SQL Server 2005, les agents de réplication établissent toujours des connexions à l’instance locale de SQL Server avec l’authentification Windows à l’aide des informations d’identification fournies dans @job_name et @job_password. Pour plus d’informations sur les exigences des comptes Windows utilisés lors de l’exécution de travaux d’agent de réplication, consultez le modèle de sécurité de l’agent de réplication.

Important

Si possible, invitez les utilisateurs à entrer des informations d’identification de sécurité au moment de l’exécution. Si vous stockez des informations d’identification dans un fichier de script, vérifiez que le fichier lui-même est sécurisé.

Pour mettre à niveau des scripts qui configurent une publication d’instantané ou transactionnelle

  1. Dans le script existant, avant sp_addpublication (Transact-SQL), exécutez sp_addlogreader_agent (Transact-SQL) au niveau du serveur de publication sur la base de données de publication. Spécifiez les informations d’identification Windows sous lesquelles l’Agent de lecture du journal s’exécute pour @job_name et @job_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 une tâche de l’Agent de lecture du journal pour la base de données de publication.

    Remarque

    Cette étape concerne uniquement les publications transactionnelles et n’est pas requise pour les publications d’instantanés.

  2. (Facultatif) Avant d'exécuter sp_addpublication (Transact-SQL),exécutez sp_addqreader_agent (Transact-SQL) sur le serveur de Distribution dans la base de données de distribution. Spécifiez les informations d’identification Windows sous lesquelles l’Agent de lecture de file d’attente s’exécute pour @job_name et @job_password. Cela crée un emploi d'agent lecteur de file d'attente pour le distributeur.

    Remarque

    Cette étape n’est requise que pour les publications transactionnelles qui soutiennent la mise à jour en file d'attente des abonnés.

  3. (Facultatif) Mettez à jour l’exécution de sp_addpublication (Transact-SQL) pour définir les valeurs non par défaut des paramètres qui implémentent de nouvelles fonctionnalités de réplication.

  4. Après sp_addpublication (Transact-SQL),exécutez sp_addpublication_snapshot (Transact-SQL) sur le serveur de publication sur la base de données de publication. Spécifiez @publication et les informations d’identification Windows sous lesquelles l’Agent d’instantané s’exécute pour @job_name et @job_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.

  5. (Facultatif) Mettez à jour l’exécution de sp_addarticle (Transact-SQL) pour définir toutes les valeurs non par défaut pour les paramètres qui implémentent de nouvelles fonctionnalités de réplication.

Pour mettre à niveau des scripts qui ajoutent des abonnements à une publication d'instantané ou transactionnelle.

  1. Après avoir exécuté la procédure stockée qui crée l’abonnement, vérifiez que vous exécutez la procédure stockée qui crée un travail de l’Agent de distribution pour synchroniser l’abonnement. La procédure stockée que vous utilisez dépend du type d’abonnement.

Pour mettre à niveau des scripts qui configurent une publication de fusion

  1. (Facultatif) Dans le script existant, mettez à jour l’exécution de sp_addmergepublication (Transact-SQL) pour définir les valeurs non par défaut des paramètres qui implémentent de nouvelles fonctionnalités de réplication.

  2. Après sp_addmergepublication (Transact-SQL), exécutez sp_addpublication_snapshot (Transact-SQL) à l'éditeur sur la base de données de publication. Spécifiez @publication et les informations d’identification Windows sous lesquelles l’Agent d’instantané s’exécute pour @job_name et @job_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.

  3. (Facultatif) Mettez à jour l’exécution de sp_addmergearticle (Transact-SQL) pour définir toutes les valeurs non par défaut pour les paramètres qui implémentent de nouvelles fonctionnalités de réplication.

Pour mettre à niveau des scripts qui ajoutent des abonnements à une publication de fusion

  1. Après avoir exécuté la procédure stockée qui crée l’abonnement, assurez-vous d'exécuter la procédure stockée qui crée une tâche de l’agent de fusion pour synchroniser l’abonnement. La procédure stockée que vous utilisez dépend du type d’abonnement.

Exemple :

Voici un exemple de script SQL Server 2000 qui crée une publication transactionnelle pour la table Product. Cette publication prend en charge la mise à jour immédiate et l'actualisation en file d'attente comme solution de secours. Les paramètres par défaut ont été supprimés pour la lisibilité.

USE [Northwind]
GO

DECLARE @publication AS sysname
DECLARE @publicationDB AS sysname
DECLARE @article AS sysname
SET @publication = N'NwdProductTran'
SET @publicationDB = N'Northwind'
SET @article = N'Products'

-- Enable the replication database.
EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname = N'publish', 
    @value = N'true'

-- Add the transactional publication.
EXEC sp_addpublication 
    @publication = @publication, 
    @sync_method = N'native', 
    @status = N'active', 
    @repl_freq = N'continuous', 
    @description = N'Transactional publication of Northwind.', 
    @allow_push = N'true', 
    @allow_pull = N'true', 
    @allow_sync_tran = N'true', 
    @autogen_sync_procs = N'true', 
    @allow_queued_tran = N'true'

-- Add a snapshot job.
EXEC sp_addpublication_snapshot 
    @publication = @publication

-- Add the transactional articles.
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @article, 
    @source_owner = N'dbo', 
    @source_object = @article, 
    @destination_table = @article, 
    @type = N'logbased', 
    @schema_option = 0x00000000000080F3, 
    @ins_cmd = N'CALL sp_MSins_Products', 
    @del_cmd = N'XCALL sp_MSdel_Products', 
    @upd_cmd = N'XCALL sp_MSupd_Products', 
    @auto_identity_range = N'false'
GO

Exemple :

Voici un exemple de mise à niveau du script précédent, qui crée une publication transactionnelle, pour s’exécuter correctement pour SQL Server 2005 et versions ultérieures. Cette publication prend en charge la mise à jour immédiate, avec la mise à jour en file d’attente servant de basculement. Les valeurs par défaut des nouveaux paramètres ont été déclarées explicitement.

Remarque

Les informations d’identification Windows sont fournies au moment de l’exécution à l’aide de variables de script sqlcmd .

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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".

-- Execute at the Distributor.
USE [distribution]

DECLARE @login AS sysname;
DECLARE @password AS sysname;
-- Specify the Windows account to run the Queue Reader Agent.
SET @login = $(Login); 
-- Pass the password at runtime.
SET @password = $(Password); 

-- Execute sp_addqreader_agent to create the Queue Reader Agent job. 
EXEC sp_addqreader_agent 
    @job_login = @login, 
    @job_password = @password;
GO

-- Execute at the Publisher.
USE [Northwind]
GO

DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @article AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran';
SET @publicationDB = N'Northwind';
SET @article = N'Products';
-- Specify the Windows account to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- Pass the password at runtime.
SET @password = $(Password); 

-- Enable the replication 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;

-- Add the transactional publication.
EXEC sp_addpublication 
    @publication = @publication, 
    @sync_method = N'native', 
    @repl_freq = N'continuous', 
    @status = N'active',
    @description = N'Transactional publication of Northwind.', 
    @allow_push = N'true', 
    @allow_pull = N'true', 
    @allow_sync_tran = N'true', 
    @autogen_sync_procs = N'true', 
    @allow_queued_tran = N'true',
    @replicate_ddl = 1,
    @enabled_for_p2p = N'false';

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

-- Add a transactional article.
EXEC sp_addarticle 
  @publication = @publication, 
  @article = @article, 
  @source_owner = N'dbo', 
  @source_object = @article, 
  @destination_table = @article, 
  @type = N'logbased', 
  @schema_option = 0x00000000000080F3, 
  @ins_cmd = N'CALL sp_MSins_Products', 
  @del_cmd = N'XCALL sp_MSdel_Products', 
  @upd_cmd = N'XCALL sp_MSupd_Products', 
  @auto_identity_range = N'false',
  @identityrangemanagementoption = N'manual',
  @fire_triggers_on_snapshot = N'false';
GO

Exemple :

Voici un exemple de script SQL Server 2000 qui crée une publication de fusion pour la table Customers. Les paramètres par défaut ont été supprimés pour la lisibilité.

-- Enable the replication database.
USE [Northwind]
GO

DECLARE @publicationDB AS sysname
DECLARE @publication AS sysname
DECLARE @article AS sysname
SET @publicationDB = N'Northwind' 
SET @publication = N'NwdCustomersMerge' 
SET @article = N'Customers' 

EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname = N'merge publish', 
    @value = N'true'

-- Add the merge publication.
EXEC sp_addmergepublication 
    @publication = @publication, 
    @description = N'Merge publication of Northwind.', 
    @retention = 14, 
    @sync_mode = N'native', 
    @centralized_conflicts = N'true', 
    @dynamic_filters = N'false', 
    @keep_partition_changes = N'false'
 
EXEC sp_addpublication_snapshot 
    @publication = @publication

-- Add the merge articles.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_owner = N'dbo', 
    @source_object = @article, 
    @type = N'table', 
    @description = null, 
    @column_tracking = N'true', 
    @schema_option = 0x000000000000CFF1
 GO

Exemple :

Voici un exemple du script précédent, qui crée une publication de fusion, mis à niveau pour s’exécuter correctement pour SQL Server 2005 et versions ultérieures. Les valeurs par défaut des nouveaux paramètres ont été déclarées explicitement.

Remarque

Les informations d’identification Windows sont fournies au moment de l’exécution à l’aide de variables de script sqlcmd .

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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".

-- Enabling the replication database
-- Enable the replication database.
USE [Northwind]
GO

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'Northwind';
SET @publication = N'NwdCustomersMerge';
SET @article = N'Customers';
-- Specify the Windows account to run the Snapshot Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname = N'merge publish', 
    @value = N'true';

-- Add the merge publication.
EXEC sp_addmergepublication 
    @publication = @publication, 
    @description = N'Merge publication of Northwind.', 
    @retention = 14, 
    @sync_mode = N'native', 
    @dynamic_filters = N'false', 
    @keep_partition_changes = N'false',
    -- Only set to '90RTM' if all Subscribers are SQL Server 2005.
    @publication_compatibility_level = N'90RTM',
    @replicate_ddl = 1,
    @allow_subscriber_initiated_snapshot = N'true',
    @allow_web_synchronization = N'false',
    @allow_partition_realignment = N'true',
    @retention_period_unit = N'day',
    @automatic_reinitialization_policy = 0,
    @conflict_logging = N'both';
 
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login,
    @job_password = @password;

-- Add the merge article.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_owner = N'dbo', 
    @source_object = @article, 
    @type = N'table', 
    @description = null, 
    @column_tracking = N'true', 
    @schema_option = 0x0000000000034FD1,
    @partition_options = 0,
    @subscriber_upload_options = 0,
    @identityrangemanagementoption = N'manual',
    @delete_tracking = N'true',
    @compensate_for_errors = N'false',
    @stream_blob_columns = N'true';
GO

Exemple :

Voici un exemple de script SQL Server 2000 qui crée un abonnement Push à une publication transactionnelle. Les paramètres par défaut ont été supprimés pour la lisibilité.

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdProductTran' 
SET @subscriber = N'MYSUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
    @subscriber = @subscriber

-- Add a push subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'push'
GO

Exemple :

Voici un exemple de script précédent, qui crée un abonnement Push à une publication transactionnelle, mis à niveau pour s’exécuter correctement pour SQL Server 2005 et versions ultérieures. Les valeurs par défaut des nouveaux paramètres ont été déclarées explicitement.

Remarque

Les informations d’identification Windows sont fournies au moment de l’exécution à l’aide de variables de script sqlcmd .

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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 @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran'; 
SET @subscriber = $(Subscriber); 
SET @subscriptionDB = N'NorthwindReplica'; 
-- Specify the Windows account to run the Distribution Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

-- Add a push subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'push';

-- Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @job_login = @login, 
    @job_password = @password;
GO

Exemple :

Voici un exemple de script SQL Server 2000 qui crée un abonnement Push à une publication de fusion. Les paramètres par défaut ont été supprimés pour la lisibilité.

DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @subscriber = N'SUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
  @subscriber = @subscriber

-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @subscriber_type = N'local',
  @sync_type = N'automatic'
GO

Exemple :

Voici un exemple de script précédent, qui crée un abonnement Push à une publication de fusion, mis à niveau pour s’exécuter correctement pour SQL Server 2005 et versions ultérieures. Les valeurs par défaut des nouveaux paramètres ont été déclarées explicitement.

Remarque

Les informations d’identification Windows sont fournies au moment de l’exécution à l’aide de variables de script sqlcmd .

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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 @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdCustomersMerge'; 
SET @subscriber = $(Subscriber); 
SET @subscriptionDB = N'NorthwindReplica'; 
-- Specify the Windows account to run the Merge Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @subscription_type = N'push';

-- Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @job_login = @login, 
    @job_password = @password;
GO

Exemple :

Voici un exemple de script SQL Server 2000 qui crée un abonnement par extraction à une publication transactionnelle. Les paramètres par défaut ont été supprimés pour la lisibilité.

DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @subscriber = N'SUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
  @subscriber = @subscriber

-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @subscriber_type = N'local',
  @sync_type = N'automatic'
GO

Exemple :

Voici un exemple de script précédent, qui crée un abonnement par extraction vers une publication transactionnelle, mis à niveau pour s’exécuter correctement pour SQL Server 2005 et versions ultérieures. Les valeurs par défaut des nouveaux paramètres ont été déclarées explicitement.

Remarque

Les informations d’identification Windows sont fournies au moment de l’exécution à l’aide de variables de script sqlcmd .

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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".

-- Execute at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran'; 
SET @publisher = $(Publisher); 
SET @publicationDB = N'Northwind'; 
-- Specify the Windows account to run the Distribution Agent.
SET @login = $(Login); 
-- Supply the password at runtime.
SET @password = $(Password); 

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [NorthwindReplica]
EXEC sp_addpullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB,
    @subscription_type = N'pull';

-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @distributor = @publisher,
    @job_login = @login,
    @job_password = @password;
GO

-- Execute at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdProductTran'; 
SET @subscriber = $(Subscriber); 
SET @subscriptionDB = N'NorthwindReplica'; 

-- Add a pull subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'pull';
GO

Exemple :

Voici un exemple de script SQL Server 2000 qui crée un abonnement par extraction à une publication de fusion. Les paramètres par défaut ont été supprimés pour la lisibilité.

-- Execute at the Subscriber
DECLARE @publication AS sysname
DECLARE @publisher AS sysname
DECLARE @publicationDB AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @publisher = N'PUBSERVER' 
SET @publicationDB = N'Northwind' 
SET @subscriber = N'SUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica'

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [NorthwindReplica]
EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @distributor = @publisher
GO

-- Execute at the Publisher.
DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge' 
SET @subscriber = N'MYSUBSERVER' 
SET @subscriptionDB = N'NorthwindReplica' 

-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber 
  @subscriber = @subscriber

-- Add a pull subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'pull',
  @subscriber_type = N'local',
  @sync_type = N'automatic'
GO

Exemple :

Voici un exemple du script précédent, qui crée un abonnement par extraction vers une publication de fusion, mis à niveau afin de fonctionner correctement avec SQL Server 2005 et les versions ultérieures. Les valeurs par défaut des nouveaux paramètres ont été déclarées explicitement.

Remarque

Les informations d’identification Windows sont fournies au moment de l’exécution à l’aide de variables de script sqlcmd .

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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".

-- Execute at the Subscriber
DECLARE @publication  AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdCustomersMerge'; 
SET @publisher = $(Publisher); 
SET @publicationDB = N'Northwind'; 
-- Specify the Windows account to run the Merge Agent.
SET @login = $(Login); 
-- Pass the password at runtime.
SET @password = $(Password); 

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [NorthwindReplica]
EXEC sp_addmergepullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication,
  @distributor = @publisher,
  @job_login = @login,
  @job_password = @password;
GO

-- Execute at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdCustomersMerge';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';

-- Add a pull subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'pull',
  @subscriber_type = N'local',
  @sync_type = N'automatic';
GO

Voir aussi

Créer une publication
Créer un abonnement push
Créer un abonnement par extraction
Afficher et modifier les paramètres de sécurité de la réplication
MSSQL_ENG021797
MSSQL_ENG021798
Concepts liés aux procédures stockées système de réplication
Mettre à niveau des bases de données répliquées