sp_link_publication (Transact-SQL)

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

SicherheitshinweisSicherheitshinweis

 Bei der Konfiguration 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 seinem Remoteverteiler verschlüsseln, bevor diese gespeicherte Prozedur ausgeführt wird. Weitere Informationen finden Sie unter Verschlüsseln von Verbindungen zu SQL Server.

Wichtiger HinweisWichtig

Unter bestimmten Bedingungen kann bei dieser gespeicherten Prozedur ein Fehler auftreten, wenn auf dem Abonnenten Microsoft SQL Server 2005 Service Pack 1 oder höher und auf dem Verleger eine frühere Version ausgeführt wird. Falls in diesem Szenario ein Fehler bei der gespeicherten Prozdur auftritt, sollten Sie den Verleger auf SQL Server 2005 Service Pack 1 oder höher aktualisieren.

Themenlink (Symbol)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 Verbindung hergestellt werden soll. publisher ist vom Datentyp sysname und hat keinen Standardwert.

  • [ @publisher_db= ] 'publisher_db'
    Der Name der Verlegerdatenbank, mit der eine Verbindung hergestellt werden soll. publisher_db ist vom Datentyp sysname und hat keinen Standardwert.

  • [ @publication= ] 'publication'
    Der Name der Veröffentlichung, mit der eine Verbindung hergestellt werden soll. publication ist vom Datentyp sysname und hat keinen Standardwert.

  • [ @security_mode= ] security_mode
    Der Sicherheitsmodus, der vom Abonnenten zum Herstellen einer Verbindung mit einem Remoteverleger für eine sofortige Aktualisierung verwendet wird. security_mode ist vom Datentyp int. Folgende Werte sind möglich. Verwenden Sie nach Möglichkeit die Windows-Authentifizierung.

    Wert

    Beschreibung

    0

    Verwendet die SQL Server-Authentifizierung mit dem Anmeldenamen, der in dieser gespeicherten Prozedur als login und password angegeben ist.

    HinweisHinweis
    In früheren Versionen von SQL Server wurde diese Option zum Angeben eines dynamischen Remoteprozeduraufrufes (RPC) verwendet.

    1

    Verwendet den Sicherheitskontext (SQL Server-Authentifizierung oder Windows-Authentifizierung) des Benutzers, der die Änderung auf dem Abonnenten ausführt.

    HinweisHinweis
    Dieses Konto muss auch auf dem Verleger mit entsprechenden Privilegien 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'
    Der Anmeldename. login ist vom Datentyp sysname und hat den Standardwert NULL. Dieser Parameter muss angegeben sein, wenn security_mode auf den Wert 0 festgelegt ist.

  • [ @password= ] 'password'
    Das Kennwort. password ist vom Datentyp sysname und hat den Standardwert NULL. Dieser Parameter muss angegeben sein, wenn security_mode auf den Wert 0 festgelegt ist.

  • [ @distributor= ] 'distributor'
    Der Name des Verteilers. distributor ist vom Datentyp sysname und hat den Standardwert NULL.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_link_publication wird von Abonnements mit sofortiger Aktualisierung in der Transaktionsreplikation verwendet.

sp_link_publication kann für Push- und Pullabonnements verwendet werden. Der Aufruf ist vor oder nach dem Erstellen des Abonnements möglich. In der MSsubscription_properties (Transact-SQL)-Systemtabelle wird ein Eintrag eingefügt oder aktualisiert.

Bei Pushabonnements kann der Eintrag mit sp_subscription_cleanup (Transact-SQL) gelöscht werden. Bei Pullabonnements kann der Eintrag mit sp_droppullsubscription (Transact-SQL) oder sp_subscription_cleanup (Transact-SQL) gelöscht werden. Es besteht auch die Möglichkeit, sp_link_publication mit einem NULL-Kennwort aufzurufen, um den Eintrag in der MSsubscription_properties (Transact-SQL)-Systemtabelle aus Sicherheitsgründen zu löschen.

Der Standardmodus, der von einem sofort aktualisierbaren Abonnenten 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 sofort aktualisierbare Abonnent sollte diese Verbindung dann für die Aktualisierung des Abonnenten verwenden. Dies erfordert, dass sp_link_publication mit security_mode = 2 ausgeführt wird. 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'AdventureWorks2008R2';
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 AdventureWorks2008R2;
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'AdventureWorks2008R2Replica'; 
SET @subscriber = $(SubServer);

-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2008R2]
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.