sp_link_publication (Transact-SQL)
Establece la información de configuración y de seguridad que utilizan los desencadenadores de sincronización de las suscripciones de actualización inmediata al conectar con el publicador. Este procedimiento almacenado se ejecuta en el suscriptor de la base de datos de suscripciones.
Nota de seguridad: |
---|
Al configurar un publicador con un distribuidor remoto, los valores suministrados para todos los parámetros, incluidos job_login y job_password, se envían al distribuidor como texto sin formato. Debe cifrar la conexión entre el publicador y su distribuidor remoto antes de ejecutar este procedimiento almacenado. Para obtener más información, vea Cifrar conexiones a SQL Server. |
Importante: |
---|
En determinadas condiciones, este procedimiento almacenado puede generar un error si en el suscriptor se ejecuta el Service Pack 1 de Microsoft SQL Server 2005 o posterior y en el publicador se ejecuta una versión anterior. Si el procedimiento almacenado genera un error en este escenario, actualice el publicador al Service Pack 1 de SQL Server 2005 o posterior. |
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_link_publication [ @publisher = ] 'publisher'
, [ @publisher_db = ] 'publisher_db'
, [ @publication = ] 'publication'
, [ @security_mode = ] security_mode
[ , [ @login = ] 'login' ]
[ , [ @password = ]'password' ]
[ , [ @distributor = ] 'distributor' ]
Argumentos
- [ @publisher = ] 'publisher'
Es el nombre del publicador con el que se establece el vínculo. publisher es de tipo sysname y no tiene ningún valor predeterminado.
- [ @publisher_db= ] 'publisher_db'
Es el nombre de la base de datos del publicador con el que se establece el vínculo. publisher_db es de tipo sysname y no tiene ningún valor predeterminado.
- [ @publication= ] 'publication'
Es el nombre de la publicación con la que se establece el vínculo. publication es de tipo sysname y no tiene ningún valor predeterminado.
[ @security_mode= ] security_mode
Es el modo de seguridad utilizado por el suscriptor para conectarse a un publicador remoto para la actualización inmediata. security_mode es de tipo int y puede ser uno de los valores siguientes.Valor
- [ @login= ] 'login'
Es el inicio de sesión. login es de tipo sysname y su valor predeterminado es NULL. Este parámetro se debe especificar si security_mode es 0.
- [ @password = ] 'password'
Es la contraseña. password es de tipo sysname y su valor predeterminado es NULL. Este parámetro se debe especificar si security_mode es 0.
- [ @distributor= ] 'distributor'
Es el nombre del distribuidor. distributor es de tipo sysname y su valor predeterminado es NULL.
Notas
sp_link_publication se utiliza para las suscripciones de actualización inmediata en la réplica transaccional.
sp_link_publication se puede utilizar para suscripciones de extracción e inserción. Se puede llamar antes o después de haber creado la suscripción. Al hacerlo se inserta o actualiza una entrada de la tabla de sistema MSsubscription_properties (Transact-SQL).
Para las suscripciones de inserción, la entrada se puede limpiar con sp_subscription_cleanup (Transact-SQL). Para las suscripciones de extracción, la entrada se puede limpiar con sp_droppullsubscription (Transact-SQL) o sp_subscription_cleanup (Transact-SQL). También puede llamar a sp_link_publication con NULL como contraseña para borrar la entrada de la tabla de sistema MSsubscription_properties (Transact-SQL) por motivos de seguridad.
El modo predeterminado que utiliza un suscriptor de actualización inmediata cuando se conecta al publicador no permite una conexión mediante la autenticación de Windows. Para conectar con un modo de autenticación de Windows, se deberá configurar un servidor vinculado como publicador, y el suscriptor de actualización inmediata debe utilizar esta conexión cuando actualice el suscriptor. Esto requiere que se ejecute sp_link_publication con security_mode = 2. Al usar la autenticación de Windows, se debe admitir la delegación de cuentas de seguridad.
Permisos
Sólo los miembros de la función fija de servidor sysadmin pueden ejecutar sp_link_publication.
Valores de código de retorno
0 (correcto) o 1 (error)
Ejemplo
-- 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
Vea también
Referencia
sp_droppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)
sp_subscription_cleanup (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)
Otros recursos
Consideraciones de seguridad para la actualización de suscripciones