sp_link_publication (Transact-SQL)
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 für die Abonnementdatenbank ausgeführt.
Sicherheitshinweis |
---|
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 seinem Remoteverteiler verschlüsseln, bevor diese gespeicherte Prozedur ausgeführt wird. Weitere Informationen finden Sie unter Aktivieren von verschlüsselten Verbindungen zum Datenbankmodul (SQL Server-Konfigurations-Manager). |
Wichtig |
---|
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. |
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 verwendet wird, um für das unmittelbare Update eine Verbindung mit einem Remoteverleger herzustellen. security_mode ist vom Datentyp int. Die folgenden 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.
Hinweis 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.
Hinweis 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 sofortigem Update 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 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. 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'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
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin können sp_link_publication ausführen.
Siehe auch
Verweis
sp_droppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)