sp_link_publication (Transact-SQL)sp_link_publication (Transact-SQL)

S’APPLIQUE À : ouiSQL Server nonAzure SQL Database nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

Définit les informations de configuration et de sécurité utilisées par les déclencheurs de synchronisation des abonnements avec mise à jour immédiate lors de la connexion au serveur de publication.Sets the configuration and security information used by synchronization triggers of immediate updating subscriptions when connecting to the Publisher. Cette procédure stockée est exécutée sur la base de données d'abonnement de l'Abonné.This stored procedure is executed at the Subscriber on the subscription database.

Important

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 en texte brut au serveur de distribution.When configuring a Publisher with a remote Distributor, the values supplied for all parameters, including job_login and job_password, are sent to the Distributor as plain text. 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.You should encrypt the connection between the Publisher and its remote Distributor before executing this stored procedure. Pour plus d’informations, consultez Activer des connexions chiffrées dans le moteur de base de données (Gestionnaire de configuration SQL Server).For more information, see Enable Encrypted Connections to the Database Engine (SQL Server Configuration Manager).

Important

Sous certaines conditions, cette procédure stockée peut échouer si l’abonné est en cours d’exécution MicrosoftMicrosoft SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 1 ou version ultérieure et le serveur de publication exécute une version antérieure.Under certain conditions, this stored procedure can fail if the Subscriber is running MicrosoftMicrosoftSQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 1 or later, and the Publisher is running an earlier version. Si la procédure stockée échoue dans ce scénario, mettez à niveau l'Éditeur vers SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 1 ou version ultérieure.If the stored procedure fails in this scenario, upgrade the Publisher to SQL Server 2005 (9.x)SQL Server 2005 (9.x) Service Pack 1 or later.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

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

ArgumentsArguments

[ @publisher = ] 'publisher' Est le nom du serveur de publication à lier.[ @publisher = ] 'publisher' Is the name of the Publisher to link to. serveur de publication est sysname, sans valeur par défaut.publisher is sysname, with no default.

[ @publisher_db = ] 'publisher_db' Est le nom de la base de données du serveur de publication à lier.[ @publisher_db = ] 'publisher_db' Is the name of the Publisher database to link to. publisher_db est sysname, sans valeur par défaut.publisher_db is sysname, with no default.

[ @publication = ] 'publication' Est le nom de la publication à lier.[ @publication = ] 'publication' Is the name of the publication to link to. publication est sysname, sans valeur par défaut.publication is sysname, with no default.

[ @security_mode = ] security_mode Le mode de sécurité utilisé par l’abonné pour se connecter à un serveur de publication distant pour la mise à jour immédiate.[ @security_mode = ] security_mode Is the security mode used by the Subscriber to connect to a remote Publisher for immediate updating. security_mode est int, et peut prendre l’une des valeurs suivantes.security_mode is int, and can be one of these values. Lorsque c'est possible, utilisez l'authentification Windows.When possible, use Windows authentication.

ValueValue DescriptionDescription
00 Utilise SQL ServerSQL Server l’authentification avec la connexion spécifiée dans cette procédure stockée en tant que connexion et mot de passe.Uses SQL ServerSQL Server Authentication with the login specified in this stored procedure as login and password.

Remarque : Dans les versions précédentes de SQL ServerSQL Server, cette option a été utilisée pour spécifier un appel de procédure distante dynamique (RPC).Note: In previous versions of SQL ServerSQL Server, this option was used to specify a dynamic remote procedure call (RPC).
11 Utilise le contexte de sécurité (authentification SQL ServerSQL Server ou Windows) de l'utilisateur apportant la modification sur l'Abonné.Uses the security context (SQL ServerSQL Server Authentication or Windows Authentication) of the user making the change at the Subscriber.

Remarque : Ce compte doit également exister sur le serveur de publication avec des privilèges suffisants.Note: This account must also exist at the Publisher with sufficient privileges. Lorsque vous utilisez l'authentification Windows, la délégation de compte de sécurité doit être prise en charge.When using Windows Authentication, security account delegation must be supported.
22 Utilise une connexion de serveur lié existante, définie par l’utilisateur créée à l’aide sp_link_publication.Uses an existing, user-defined linked server login created using sp_link_publication.

[ @login = ] 'login' Est le nom de connexion.[ @login = ] 'login' Is the login. login est de type sysname, avec NULL comme valeur par défaut.login is sysname, with a default of NULL. Ce paramètre doit être spécifié lorsque security_mode est 0.This parameter must be specified when security_mode is 0.

[ @password = ] 'password' Est le mot de passe.[ @password = ] 'password' Is the password. mot de passe est sysname, avec NULL comme valeur par défaut.password is sysname, with a default of NULL. Ce paramètre doit être spécifié lorsque security_mode est 0.This parameter must be specified when security_mode is 0.

[ @distributor = ] 'distributor' Est le nom du serveur de distribution.[ @distributor = ] 'distributor' Is the name of the Distributor. serveur de distribution est sysname, avec NULL comme valeur par défaut.distributor is sysname, with a default of NULL.

Valeurs des codes de retourReturn Code Values

0 (réussite) ou 1 (échec)0 (success) or 1 (failure)

NotesRemarks

sp_link_publication est utilisé par les abonnements avec mise à jour immédiatement dans la réplication transactionnelle.sp_link_publication is used by immediate updating subscriptions in transactional replication.

sp_link_publication peut être utilisé pour les abonnements envoyés et extraits.sp_link_publication can be used for both push and pull subscriptions. Cette procédure peut être appelée avant ou après la création de l’abonnement.It can be called before or after the subscription is created. Une entrée est insérée ou mise à jour dans le MSsubscription_properties (Transact-SQL) (table système).An entry is inserted or updated in the MSsubscription_properties (Transact-SQL) system table.

Pour les abonnements envoyés, l’entrée peut être nettoyée par sp_subscription_cleanup (Transact-SQL).For push subscriptions, the entry can be cleaned up by sp_subscription_cleanup (Transact-SQL). Pour les abonnements extraits, l’entrée peut être nettoyée par sp_droppullsubscription (Transact-SQL) ou sp_subscription_cleanup (Transact-SQL).For pull subscriptions, the entry can be cleaned up by sp_droppullsubscription (Transact-SQL) or sp_subscription_cleanup (Transact-SQL). Vous pouvez également appeler sp_link_publication avec un mot de passe NULL pour effacer l’entrée dans le MSsubscription_properties (Transact-SQL) (table système) pour les problèmes de sécurité.You can also call sp_link_publication with a NULL password to clear the entry in the MSsubscription_properties (Transact-SQL) system table for security concerns.

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.The default mode used by an immediate updating Subscriber when it connects to the Publisher does not allow a connection using Windows Authentication. 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é.To connect with a mode of Windows Authentication, a linked server has to be set up to the Publisher, and the immediate updating Subscriber should use this connection when updating the Subscriber. Cela nécessite la sp_link_publication à exécuter avec security_mode = 2.This requires the sp_link_publication to be run with security_mode = 2. Lorsque vous utilisez l'authentification Windows, la délégation de compte de sécurité doit être prise en charge.When using Windows Authentication, security account delegation must be supported.

ExempleExample

-- 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'AdventureWorks2012';
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 AdventureWorks2012
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'AdventureWorks2012Replica'; 
SET @subscriber = $(SubServer);

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

AutorisationsPermissions

Seuls les membres de la sysadmin du rôle serveur fixe peuvent exécuter sp_link_publication.Only members of the sysadmin fixed server role can execute sp_link_publication.

Voir aussiSee Also

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