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

Wenn Sie einen Publisher mit einem Remoteverteiler konfigurieren, werden die für alle Parameter bereitgestellten Werte, einschließlich @job_login und @job_password, als Nur-Text an den Distributor 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 Konfigurieren der SQL Server-Datenbank-Engine zum Verschlüsseln von Verbindungen.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @publisher = ] N'publisher'

Der Name des Herausgebers, mit dem eine Verknüpfung hergestellt werden soll. @publisher ist "sysname" ohne Standard.

[ @publisher_db = ] N'publisher_db'

Der Name der Publisher-Datenbank, mit der eine Verknüpfung hergestellt werden soll. @publisher_db ist "sysname" ohne Standard.

[ @publication = ] N'Publikation'

Der Name der Publikation, mit der eine Verknüpfung hergestellt werden soll. @publication ist "sysname" ohne Standard.

[ @security_mode = ] security_mode

Der vom Abonnenten verwendete Sicherheitsmodus, um eine Verbindung mit einem Remote-Publisher herzustellen, um die sofortige Aktualisierung zu gewährleisten. @security_mode ist int und kann einer 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 @login und @password.

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. Wenn Sie die Windows-Authentifizierung verwenden, muss die Delegierung des Sicherheitskontos unterstützt werden.
2 Verwendet eine vorhandene, benutzerdefinierte verknüpfte Serveranmeldung, die mit sp_link_publication.

[ @login = ] N'login'

Die Anmeldung. @login ist "sysname" mit der Standardeinstellung "NULL. Dieser Parameter muss angegeben werden, wenn @security_mode ist 0.

[ @password = ] N'password'

Das Kennwort. @password ist "sysname" mit der Standardeinstellung "NULL. Dieser Parameter muss angegeben werden, wenn @security_mode ist 0.

[ @distributor = ] N'distributor'

Der Name des Distributors. @distributor ist "sysname" mit einem Standardwert einer leeren Zeichenfolge.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_link_publication wird von der sofortigen Aktualisierung von Abonnements in der Transaktionsreplikation verwendet.

sp_link_publication kann 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 MSsubscription_properties Systemtabelle eingefügt oder aktualisiert.

Bei Pushabonnements kann der Eintrag von sp_subscription_cleanup bereinigt werden. Bei Pullabonnements kann der Eintrag durch sp_droppullsubscription oder sp_subscription_cleanup bereinigt werden. Sie können auch mit einem Kennwort anrufensp_link_publication, um den Eintrag in der MSsubscription_properties Systemtabelle für Sicherheitsbedenken zu löschen.NULL

Der Standardmodus, der von einem unmittelbar aktualisierten Abonnenten verwendet wird, wenn eine Verbindung mit Publisher hergestellt wird, lässt keine Verbindung mit der Windows-Authentifizierung zu. 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. Dies erfordert, dass die sp_link_publication Ausführung mit @security_mode auf .2 Wenn Sie die Windows-Authentifizierung verwenden, muss die Delegierung des Sicherheitskontos unterstützt werden.

Beispiele

-- 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 ausgeführt werden sp_link_publication.