sp_link_publication (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate)

Imposta le informazioni di configurazione e sicurezza utilizzate dai trigger di sincronizzazione dei server di sottoscrizione ad aggiornamento immediato durante la connessione al server di pubblicazione. Questa stored procedure viene eseguita nel database di sottoscrizione del Sottoscrittore.

Importante

Quando si configura un server di pubblicazione con un server di distribuzione remoto, i valori specificati per tutti i parametri, inclusi job_login e job_password, vengono inviati al server di distribuzione come testo normale. È consigliabile crittografare la connessione tra il server di pubblicazione e il server di distribuzione remoto prima di eseguire questa stored procedure. Per altre informazioni, vedere Abilitare le connessioni crittografate al motore di database (Gestione configurazione SQL Server).

Importante

In determinate condizioni, questa stored procedure può avere esito negativo se il Sottoscrittore esegue service pack 1 o versione successiva e il Publisher esegue Microsoft SQL Server 2005 (9.x) una versione precedente. In caso di esito negativo della stored procedure in questo scenario, aggiornare il server di pubblicazione a SQL Server 2005 (9.x) Service Pack 1 o versioni successive.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

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

Argomenti

[ @publisher = ] 'publisher'Nome del Publisher a cui collegarsi. publisher è sysname, senza alcun valore predefinito.

[ @publisher_db = ] 'publisher_db'Nome del database Publisher a cui collegarsi. publisher_db è sysname, senza alcun valore predefinito.

[ @publication = ] 'publication' Nome della pubblicazione a cui collegarsi. publication è sysname, senza alcun valore predefinito.

[ @security_mode = ] security_modeModalità di sicurezza utilizzata dal Sottoscrittore per connettersi a un Publisher per l'aggiornamento immediato. security_mode è int e può essere uno di questi valori. Se possibile, usare l'autenticazione di Windows.

Valore Descrizione
0 Usa SQL Server l'autenticazione con l'account di accesso specificato in questo stored procedure come account di accesso e password.

Nota: nelle versioni precedenti di questa opzione è stata usata SQL Server per specificare una chiamata di procedura remota dinamica (RPC).
1 Utilizza il contesto di sicurezza (autenticazione di SQL Server o autenticazione di Windows) dell'utente che esegue la modifica nel Sottoscrittore.

Nota: questo account deve esistere anche nel Publisher con privilegi sufficienti. Se si utilizza l'autenticazione di Windows è necessario che sia supportata la delega degli account di sicurezza.
2 Usa un account di accesso al server collegato esistente definito dall'utente creato usando sp_link_publication.

[ @login = ] 'login' Account di accesso. login è di tipo sysname e il valore predefinito è NULL. Questo parametro deve essere specificato quando security_mode è 0.

[ @password = ] 'password' Password. password è sysname, con il valore predefinito NULL. Questo parametro deve essere specificato quando security_mode è 0.

[ @distributor = ] 'distributor' Nome del server di distribuzione. distributor è sysname, con il valore predefinito NULL.

Valori del codice restituito

0 (esito positivo) o 1 (errore)

Commenti

sp_link_publication viene usato dalle sottoscrizioni ad aggiornamento immediato nella replica transazionale.

sp_link_publication può essere usato sia per le sottoscrizioni push che per le sottoscrizioni pull. Questa stored procedure può essere chiamata prima o dopo la creazione della sottoscrizione. Una voce viene inserita o aggiornata nella MSsubscription_properties (di sistema Transact-SQL).

Per le sottoscrizioni push, la voce può essere pulita sp_subscription_cleanup (Transact-SQL). Per le sottoscrizioni pull, la voce può essere pulita sp_droppullsubscription (Transact-SQL) o sp_subscription_cleanup (Transact-SQL). È anche possibile chiamare sp_link_publication con una password NULL per cancellare la voce nella tabella MSsubscription_properties (di sistema Transact-SQL) per problemi di sicurezza.

La modalità predefinita utilizzata in un Sottoscrittore ad aggiornamento immediato per la connessione al server di pubblicazione non consente la connessione tramite l'autenticazione di Windows. Per eseguire la connessione con questa modalità di autenticazione, è necessario configurare un server collegato per il server di pubblicazione e il Sottoscrittore ad aggiornamento immediato deve utilizzare questa connessione per l'aggiornamento del Sottoscrittore. Questa operazione richiede sp_link_publication l'esecuzione con security_mode = 2. Se si utilizza l'autenticazione di Windows è necessario che sia supportata la delega degli account di sicurezza.

Esempio

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

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin possono eseguire sp_link_publication.

Vedere anche

sp_droppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)
sp_subscription_cleanup (Transact-SQL)
Stored procedure di sistema (Transact-SQL)