Partager via


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

S’applique à : SQL Server Azure SQL Managed Instance

Les fichiers de script Transact-SQL peuvent être utilisés pour configurer une topologie de réplication par programmation. 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 offrent un contrôle accru sur les 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 comme @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 un travail explicitement 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 (9.x), ces actions étaient exécutées automatiquement lors de la création d'un abonnement par émission de données.

  • sp_addmergepushsubscription_agent:

    Vous devez maintenant exécuter sp_addmergepushsubscription_agent (Transact-SQL) pour ajouter un travail explicitement 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 (9.x), ces actions étaient exécutées automatiquement lors de la création d'un abonnement par émission de données.

  • sp_addpullsubscription_agent:

    Vous devez maintenant fournir les informations d’identification Windows comme @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 comme @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 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), ces actions étaient exécutées 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 la file d’attente s’exécute sur le serveur de distribution. Dans les versions de SQL Server antérieures à SQL Server 2005 (9.x), ces actions étaient exécutées automatiquement lors de la création d'une publication transactionnelle prenant en charge la mise à jour en file d'attente.

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 affecter la valeur 0 à @publisher_security_mode et spécifier les informations de connexion SQL Server de @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 la base de données de distribution sur le serveur 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 spécifier les valeurs non définies par défaut des paramètres qui implémentent les nouvelles fonctionnalités de réplication.

  4. Après sp_addpublication (Transact-SQL), exécutez sp_addpublication_snapshot (Transact-SQL) au niveau du 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 affecter la valeur 0 à @publisher_security_mode et spécifier les informations de connexion SQL Server de @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 spécifier les valeurs non définies par défaut des paramètres qui implémentent les 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 spécifier les valeurs non définies 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) au niveau du 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 affecter la valeur 0 à @publisher_security_mode et spécifier les informations de connexion SQL Server de @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 spécifier les valeurs non définies par défaut des paramètres qui implémentent les 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

Ce qui suit est un exemple de script SQL Server 2000 (8.x) créant 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

Ce qui suit est un exemple de mise à niveau du précédent script, lequel crée une publication transactionnelle, pour qu'il s'exécute avec succès sous SQL Server 2005 (9.x) et 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

Ce qui suit est 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

Ce qui suit est un exemple de mise à niveau du précédent script, lequel crée une publication de fusion, pour qu'il s'exécute avec succès sous 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 .

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

Ce qui suit est un exemple de script SQL Server 2000 (8.x) qui crée un abonnement par émission de données à 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

Ce qui suit est un exemple de mise à niveau du précédent script, lequel crée un abonnement par émission de données à une publication transactionnelle, pour qu'il s'exécute avec succès sous 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

Ce qui suit est un exemple de script SQL Server 2000 (8.x) qui crée un abonnement par émission de données à 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

Ce qui suit est un exemple de mise à niveau du précédent script, lequel crée un abonnement par émission de données à une publication de fusion, pour qu'il s'exécute avec succès sous 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

Ce qui suit est 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

Ce qui suit est un exemple de mise à niveau du précédent script, lequel crée un abonnement par extraction à une publication transactionnelle, pour qu'il s'exécute avec succès sous 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

Ce qui suit est 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

Ce qui suit est un exemple de mise à niveau du précédent script, lequel crée un abonnement par extraction à une publication de fusion, pour qu'il s'exécute avec succès sous 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