Mettre à niveau les scripts de réplication (programmation Transact-SQL de la réplication)

S’applique à :SQL ServerAzure SQL Managed Instance

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

Important

Bien que vous ne soyez pas tenu de mettre à niveau les scripts exécutés par les membres du rôle sysadmin , nous vous recommandons de modifier les scripts existants comme décrit dans cette rubrique. Spécifiez un compte qui possède les autorisations minimales pour chaque agent de réplication comme décrit dans la section « Autorisations requises par les Agents » de la rubrique Replication Agent Security Model.

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_instantané (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_loginet@job_password) sous lesquelles le travail Agent de distribution s’exécute sur le serveur de distribution. Dans les versions de SQL Server antérieures à SQL Server 2005 (9.x), 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_loginet@job_password) sous lesquelles le travail Agent de fusion s’exécute sur le serveur de distribution. Dans les versions de SQL Server antérieures à SQL Server 2005 (9.x), 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 le 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 le 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 le travail et fournir les informations d’identification Windows sous lesquelles l’Agent de lecture du journal s’exécute sur le serveur de distribution. Dans les versions de SQL Server antérieures à SQL Server 2005 (9.x), 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 (9.x), cette opération a été effectuée automatiquement lorsqu’une publication transactionnelle qui a pris en charge la mise à jour mise à jour en file d’attente a été créée.

Dans le modèle de sécurité introduit dans SQL Server 2005 (9.x), 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 la configuration requise des comptes Windows lors de l'exécution des travaux de l'Agent de réplication, consultez Replication Agent Security Model.

Important

Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution. Si vous stockez les informations d'identification dans un fichier de script, assurez-vous que le fichier lui-même est sécurisé.

Pour mettre à niveau les scripts qui configurent une publication transactionnelle ou d'instantané

  1. Dans le script existant, avant sp_addpublication (Transact-SQL), exécutez sp_addlogreader_agent (Transact-SQL) sur le 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. Il s'ensuit la création d'un travail 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é.

  2. (Facultatif) Avant sp_addpublication (Transact-SQL), exécutez sp_addqreader_agent (Transact-SQL) sur le serveur de distribution sur la base de données de distribution. Spécifiez les informations d’identification Windows sous lesquelles l’Agent de lecture de la file d’attente s’exécute pour @job_name et @job_password. Il s'ensuit la création d'un travail de l'Agent de lecture de la file d'attente pour le serveur de distribution.

    Remarque

    Cette étape n'est requise que pour les publications transactionnelles qui prennent en charge les Abonnés de mise à jour en file d'attente.

  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_instantané (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. Il s'ensuit la création d'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 les scripts qui ajoutent des abonnements à une publication transactionnelle ou d'instantané

  1. Après avoir exécuté la procédure stockée qui crée l'abonnement, veillez bien à exécuter celle 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 les 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_instantané (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_modeet les informations de connexion SQL Server pour @publisher_login et @publisher_password. Il s'ensuit la création d'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 les 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, veillez bien à exécuter celle qui crée un travail de l'Agent de fusion pour synchroniser l'abonnement. La procédure stockée que vous utilisez dépend du type d'abonnement.

Exemples

R. Script SQL Server 2000 pour créer une publication transactionnelle

Voici un exemple de script SQL Server 2000 (8.x) qui crée une publication transactionnelle pour la table Product. Cette publication prend en charge la mise à jour immédiate avec la mise à jour en file d'attente comme basculement. Les paramètres par défaut ont été supprimés pour des raisons de 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

B. Script SQL Server 2005 et ultérieur pour créer une publication transactionnelle

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 (9.x) et les versions ultérieures. Cette publication prend en charge la mise à jour immédiate avec la mise à jour en file d'attente comme basculement. Les valeurs par défaut des nouveaux paramètres ont été déclarées explicitement.

Remarque

Les informations d'identification Windows sont fournies pendant l'exécution à l'aide des 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

C. Script SQL Server 2000 pour créer une publication de fusion

Voici un exemple de script SQL Server 2000 (8.x) qui crée une publication de fusion pour la table Customers. Les paramètres par défaut ont été supprimés pour des raisons de 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

D. Script SQL Server 2005 et ultérieur pour créer une publication de fusion

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 (9.x) 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 pendant l'exécution à l'aide des 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

E. Script SQL Server 2000 pour créer un abonnement par émission de données à une publication transactionnelle

Voici un exemple de script SQL Server 2000 (8.x) qui crée un abonnement Push à une publication transactionnelle. Les paramètres par défaut ont été supprimés pour des raisons de 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

F. Script SQL Server 2005 et ultérieur pour créer un abonnement par émission de données à une publication transactionnelle

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 (9.x) 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 pendant l'exécution à l'aide des 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

G. Script SQL Server 2000 pour créer un abonnement par émission de données à une publication de fusion

Voici un exemple de script SQL Server 2000 (8.x) qui crée un abonnement Push à une publication de fusion. Les paramètres par défaut ont été supprimés pour des raisons de 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

H. Script SQL Server 2005 et ultérieur pour créer un abonnement par émission de données à une publication de fusion

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 (9.x) 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 pendant l'exécution à l'aide des 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

I. Script SQL Server 2000 pour créer un abonnement par extraction à une publication transactionnelle

Voici un exemple de script SQL Server 2000 (8.x) qui crée un abonnement par extraction à une publication transactionnelle. Les paramètres par défaut ont été supprimés pour des raisons de 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

J. Script SQL Server 2005 et ultérieur pour créer un abonnement par extraction à une publication transactionnelle

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 (9.x) 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 pendant l'exécution à l'aide des 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

K. Script SQL Server 2000 pour créer un abonnement par extraction à une publication de fusion

Voici un exemple de script SQL Server 2000 (8.x) qui crée un abonnement par extraction à une publication de fusion. Les paramètres par défaut ont été supprimés pour des raisons de 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

L. Script SQL Server 2005 et ultérieur pour créer un abonnement par extraction à une publication de fusion

Voici un exemple de script précédent, qui crée un abonnement par extraction à une publication de fusion, mis à niveau pour s’exécuter correctement pour SQL Server 2005 (9.x) 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 pendant l'exécution à l'aide des 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 par émission de données
Créer un abonnement par extraction de données (pull)
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