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

Remarque relative à la sécuritéRemarque 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.

Important

Dans certaines conditions, cette procédure stockée peut échouer si l'Abonné exécute MicrosoftSQL 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. Lorsque c'est possible, utilisez l'authentification Windows.

    Valeur

    Description

    0

    Utilise l'authentification SQL Server avec la connexion spécifiée dans cette procédure stockée en tant que login et password.

    RemarqueRemarque
    Dans les versions antérieures de SQL Server, cette option était utilisée pour spécifier un appel de procédure distante dynamique (RPC).

    1

    Utilise le contexte de sécurité (authentification SQL Server ou Windows) de l'utilisateur apportant la modification sur l'Abonné.

    RemarqueRemarque
    Ce compte doit également exister sur le serveur de publication et bénéficier de privilèges suffisants. Lorsque vous utilisez l'authentification Windows, la délégation de compte de sécurité doit être prise en charge.

    2

    Utilise une connexion serveur existante liée, définie par l'utilisateur. Cette connexion a été créée à l'aide de la procédure stockée sp_link_publication.

  • [ @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.

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

Autorisations

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