sp_link_publication (Transact-SQL)

Gilt für:SQL Server

Legt die Konfigurations- und Sicherheitsinformationen fest, die von den Synchronisierungstriggern der Abonnements mit sofortigem Update bei der Herstellung einer Verbindung mit dem Verleger verwendet werden. Diese gespeicherte Prozedur wird auf dem Abonnenten der Abonnementdatenbank ausgeführt.

Wichtig

Beim Konfigurieren eines Verlegers mit einem Remoteverteiler werden die Werte, die für alle Parameter, einschließlich job_login und job_password, bereitgestellt werden, als Nur-Text an den Verteiler gesendet. Sie sollten die Verbindung zwischen dem Verleger und dem zugehörigen Remoteverteiler verschlüsseln, bevor Sie diese gespeicherte Prozedur ausführen. Weitere Informationen finden Sie unter Aktivieren von verschlüsselten Verbindungen zur Datenbank-Engine (SQL Server-Konfigurations-Manager).

Wichtig

Unter bestimmten Bedingungen kann diese gespeicherte Prozedur fehlschlagen, wenn der Abonnent Microsoft SQL Server 2005 (9.x) Service Pack 1 oder höher ausführt und der Verleger eine frühere Version ausführt. Wenn die gespeicherte Prozedur in diesem Szenario fehlschlägt, aktualisieren Sie den Verleger auf SQL Server 2005 (9.x) Service Pack 1 oder höher.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @publisher = ] 'publisher' Der Name des Verlegers, mit dem eine Verknüpfung hergestellt werden soll. publisher ist sysname, ohne Standardwert.

[ @publisher_db = ] 'publisher_db' Der Name der Verlegerdatenbank, mit der eine Verknüpfung hergestellt werden soll. publisher_db ist sysname, ohne Standardwert.

[ @publication = ] 'publication' Der Name der Veröffentlichung, mit der ein Link verknüpft werden soll. publication ist sysname, ohne Standard.

[ @security_mode = ] security_mode Der Sicherheitsmodus, der vom Abonnenten verwendet wird, um eine Verbindung mit einem Remoteverleger herzustellen, um sofort aktualisiert zu werden. security_mode ist int und kann einer dieser Werte sein. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

Wert BESCHREIBUNG
0 Verwendet SQL Server-Authentifizierung mit der in dieser gespeicherten Prozedur angegebenen Anmeldung als Anmeldung und Kennwort.

Hinweis: In früheren Versionen von SQL Server wurde diese Option verwendet, um einen dynamischen Remoteprozeduraufruf (RPC) anzugeben.
1 Verwendet den Sicherheitskontext (SQL Server Authentifizierung oder Windows-Authentifizierung) des Benutzers, der die Änderung auf dem Abonnenten vornimmt.

Hinweis: Dieses Konto muss auch auf dem Verleger mit ausreichenden Berechtigungen vorhanden sein. Bei Verwendung der Windows-Authentifizierung muss die Delegierung von Sicherheitskonten unterstützt werden.
2 Verwendet eine vorhandene, benutzerdefinierte Verbindungsserveranmeldung, die mit sp_link_publication erstellt wurde.

[ @login = ] 'login' Ist die Anmeldung. login ist vom Datentyp sysnameund hat den Standardwert NULL. Dieser Parameter muss angegeben werden, wenn security_mode0 ist.

[ @password = ] 'password' Das Kennwort. password ist sysname mit dem Standardwert NULL. Dieser Parameter muss angegeben werden, wenn security_mode0 ist.

[ @distributor = ] 'distributor' Der Name des Verteilers. verteiler ist sysname mit dem Standardwert NULL.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Bemerkungen

sp_link_publication wird von Abonnements in der Transaktionsreplikation verwendet, die sofort aktualisiert werden.

sp_link_publication können sowohl für Push- als auch für Pullabonnements verwendet werden. Der Aufruf ist vor oder nach dem Erstellen des Abonnements möglich. Ein Eintrag wird in die systemtabelle MSsubscription_properties (Transact-SQL) eingefügt oder aktualisiert.

Bei Pushabonnements kann der Eintrag durch sp_subscription_cleanup (Transact-SQL) bereinigt werden. Bei Pullabonnements kann der Eintrag durch sp_droppullsubscription (Transact-SQL) oder sp_subscription_cleanup (Transact-SQL) bereinigt werden. Sie können auch sp_link_publication mit einem NULL-Kennwort aufrufen, um den Eintrag in der MSsubscription_properties -Systemtabelle (Transact-SQL) aus Sicherheitsgründen zu löschen.

Der Standardmodus, der von einem Abonnenten mit sofortigem Update verwendet wird, wenn eine Verbindung zum Verleger hergestellt wird, ermöglicht nicht die Verwendung einer Verbindung mit der Windows-Authentifizierung. Wenn Sie eine Verbindung mit der Windows-Authentifizierung herstellen möchten, muss ein Verbindungsserver für den Verleger eingerichtet werden. Der Abonnent mit sofortigem Update sollte diese Verbindung dann für das Update des Abonnenten verwenden. Dazu muss die sp_link_publication mit security_mode = 2 ausgeführt werden. Bei Verwendung der Windows-Authentifizierung muss die Delegierung von Sicherheitskonten unterstützt werden.

Beispiel

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

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

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin können sp_link_publication ausführen.

Weitere Informationen

sp_droppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)
sp_subscription_cleanup (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)