Teilen über


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 beim Abonnenten in 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 publisher eine frühere Version ausführt. Wenn die gespeicherte Prozedur in diesem Szenario fehlschlägt, aktualisieren Sie publisher 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' Ist der Name des Herausgebers, mit dem eine Verknüpfung hergestellt werden soll. Publisher ist "sysname" ohne Standard.

[ @publisher_db = ] 'publisher_db'Ist der Name der Publisher-Datenbank, mit der eine Verknüpfung hergestellt werden soll. publisher_db ist "sysname" ohne Standard.

[ @publication = ] 'publication' Ist der Name der Publikation, mit der eine Verknüpfung hergestellt werden soll. Publikation ist sysname, ohne Standard.

[ @security_mode = ] security_mode Ist der Sicherheitsmodus, der vom Abonnenten verwendet wird, um eine Verbindung mit einem Remoteherausgeber herzustellen, um die sofortige Aktualisierung zu gewährleisten. security_mode ist int und kann eines dieser Werte sein. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

Wert Beschreibung
0 Verwendet die 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 (REMOTE Procedure Call, RPC) anzugeben.
1 Verwendet den Sicherheitskontext (SQL Server-Authentifizierung oder Windows-Authentifizierung) des Benutzers, der die Änderung am Abonnenten vornimmt.

Hinweis: Dieses Konto muss auch im Publisher mit ausreichenden Berechtigungen vorhanden sein. Bei Verwendung der Windows-Authentifizierung muss die Delegierung von Sicherheitskonten unterstützt werden.
2 Verwendet eine vorhandene, benutzerdefinierte verknüpfte Serveranmeldung, 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_mode 0 ist.

[ @password = ] 'password' Ist das Kennwort. password is sysname, with a default of NULL. Dieser Parameter muss angegeben werden, wenn security_mode 0 ist.

[ @distributor = ] 'distributor' Ist der Name des Distributors. distributor ist sysname, mit einem Standardwert von NULL.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_link_publication wird verwendet, indem Abonnements in der Transaktionsreplikation 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 der Systemtabelle MSsubscription_properties (Transact-SQL) eingefügt oder aktualisiert.

Für Pushabonnements kann der Eintrag von 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 Systemtabelle MSsubscription_properties (Transact-SQL) für Sicherheitsbedenken 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)