sp_link_publication (Transact-SQL)

Définit les informations de configuration et de sécurité utilisées par les déclencheurs de synchronisation des abonnements mis à jour immédiatement lors de la connexion au serveur de publication. Cette procédure stockée est exécutée sur la base de données d'abonnement de l'Abonné.

ms174991.security(fr-fr,SQL.90).gifRemarque relative à la sécurité :
 Lors de la configuration d'un serveur de publication avec un serveur de distribution distant, les valeurs fournies pour tous les paramètres, y compris job_login et job_password, sont envoyées au serveur de distribution en texte brut. Vous devez chiffrer la connexion entre le serveur de publication et son serveur de distribution distant avant d'exécuter cette procédure stockée. Pour plus d'informations, consultez Chiffrement des connexions à SQL Server.
ms174991.note(fr-fr,SQL.90).gifImportant :
Dans certaines conditions, cette procédure stockée peut échouer si l'Abonné exécute Microsoft SQL Server 2005 Service Pack 1 ou version ultérieure et que l'Éditeur exécute une version antérieure. Si la procédure stockée échoue dans ce scénario, mettez à niveau l'Éditeur vers SQL Server 2005 Service Pack 1 ou version ultérieure.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

sp_link_publication [ @publisher = ] 'publisher' 
        , [ @publisher_db = ] 'publisher_db' 
        , [ @publication = ] 'publication' 
        , [ @security_mode = ] security_mode
    [ , [ @login = ] 'login' ]
    [ , [ @password = ]'password' ]
    [ , [ @distributor = ] 'distributor' ]

Arguments

  • [ @publisher = ] 'publisher'
    Nom du serveur de publication auquel se connecter. publisher est de type sysname et n'a pas de valeur par défaut.
  • [ @publisher_db= ] 'publisher_db'
    Nom de la base de données du serveur de publication à laquelle se connecter. publisher_db est de type sysname et n'a pas de valeur par défaut.
  • [ @publication= ] 'publication'
    Nom de la publication à laquelle se lier. publication est de type sysname et n'a pas de valeur par défaut.
  • [ @security_mode= ] security_mode
    Mode de sécurité utilisé par l'Abonné pour se connecter à un serveur de publication distant pour la mise à jour immédiate. security_mode est de type int et peut prendre l'une des valeurs suivantes.

    Valeur

  • [ @login= ] 'login'
    Nom de la connexion. login est de type sysname et sa valeur par défaut est NULL. Ce paramètre doit être spécifié lorsque security_mode a la valeur 0.
  • [ @password= ] 'password'
    Mot de passe. password est de type sysname et sa valeur par défaut est NULL. Ce paramètre doit être spécifié lorsque security_mode a la valeur 0.
  • [ @distributor= ] 'distributor'
    Nom du serveur de distribution. distributor est de type sysname, avec NULL comme valeur par défaut.

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Notes

sp_link_publication est utilisée par les abonnements mis à jour immédiatement dans la réplication transactionnelle.

sp_link_publication peut être utilisée pour les abonnements envoyés et extraits. Cette procédure peut être appelée avant ou après la création de l’abonnement. Une entrée est insérée ou mise à jour dans la table système MSsubscription_properties (Transact-SQL).

Pour les abonnements envoyés, l’entrée peut être nettoyée au moyen de la procédure sp_subscription_cleanup (Transact-SQL). Pour les abonnements extraits, l’entrée peut être nettoyée au moyen de la procédure sp_droppullsubscription (Transact-SQL) ou sp_subscription_cleanup (Transact-SQL). Pour des raisons de sécurité, vous pouvez également appeler sp_link_publication avec un mot de passe NULL pour effacer l’entrée stockée dans la table système MSsubscription_properties (Transact-SQL).

Le mode par défaut utilisé par un Abonné de mise à jour immédiate lors de sa connexion au serveur de publication n'autorise pas l'utilisation de l'authentification Windows. La connexion avec un mode d'authentification Windows suppose qu'un serveur lié a été configuré au niveau du serveur de publication, et l'Abonné de mise à jour immédiate doit utiliser cette connexion lors de la mise à jour de l'Abonné. La procédure stockée sp_link_publication doit par conséquent être exécutée avec security_mode = 2. Lorsque vous utilisez l'authentification Windows, la délégation de compte de sécurité doit être prise en charge.

Autorisations

Seuls les membres du rôle de serveur fixe sysadmin peuvent exécuter sp_link_publication.

Exemple

-- 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 this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksProductTran';
SET @publicationDB = N'AdventureWorks';
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription to a transactional 
-- publication using immediate updating with queued updating as a failover.
EXEC sp_addpullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB, 
    @update_mode = N'failover', 
    @subscription_type = N'pull';

-- Add an agent job to synchronize the pull subscription, 
-- which uses Windows Authentication when connecting to the Distributor.
EXEC sp_addpullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication,
    @job_login = @login,
    @job_password = @password; 
 
-- Add a Windows Authentication-based linked server that enables the 
-- Subscriber-side triggers to make updates at the Publisher. 
EXEC sp_link_publication 
    @publisher = @publisher, 
    @publication = @publication,
    @publisher_db = @publicationDB, 
    @security_mode = 0,
    @login = @login,
    @password = @password;
GO

USE AdventureWorks
GO

-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @subscriptionDB = N'AdventureWorksReplica'; 
SET @subscriber = $(SubServer);

-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'pull', 
    @update_mode = N'failover';
GO

Voir aussi

Référence

sp_droppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)
sp_subscription_cleanup (Transact-SQL)
Procédures stockées système (Transact-SQL)

Autres ressources

Considérations sur la sécurité pour la mise à jour des abonnements

Aide et Informations

Assistance sur SQL Server 2005