sys.sp_link_publication (Transact-SQL)

Gäller för:SQL Server

Sätter konfigurations- och säkerhetsinformationen som används av synkroniseringstriggers för omedelbar uppdatering av prenumerationer vid anslutning till Publisher. Denna lagrade procureur utförs hos prenumeranten i prenumerationsdatabasen.

Important

När du konfigurerar en Publisher med en fjärrdistributör skickas värdena för alla parametrar, inklusive @job_login och @job_password, till distributören som klartext. Du bör kryptera anslutningen mellan Utgivaren och dess fjärranslutna distributör innan du kör den här lagrade proceduren. Mer information finns i Konfigurera Databasmotor för SQL Server för kryptering av anslutningar.

Transact-SQL syntaxkonventioner

Syntax

sys.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' ]
[ ; ]

Arguments

[ @publisher = ] N'publisher'

Namnet på Publisher att länka till. @publisher är sysname, utan standard.

[ @publisher_db = ] N'publisher_db'

Namnet på Publisher-databasen att länka till. @publisher_db är sysname, utan standard.

[ @publication = ] N'publicering'

Namnet på publikationen att länka till. @publication är sysname, utan standard.

[ @security_mode = ] security_mode

Säkerhetsläget som prenumeranten använder för att ansluta till en fjärransluten Publisher för omedelbar uppdatering. @security_mode är intoch kan vara ett av dessa värden. Använd Windows-autentisering när det är möjligt.

Value Description
0 Använder SQL Server autentisering med inloggningen som anges i denna lagrade procedur som @login och @password.

Notera: I tidigare versioner av SQL Server användes detta alternativ för att specificera ett dynamiskt fjärrproceduranrop (RPC).
1 Använder säkerhetskontexten (SQL Server-autentisering eller Windows-autentisering) för användaren som gör ändringen hos prenumeranten.

Observera: Detta konto måste också finnas hos Publisher med tillräckliga privilegier. När du använder Windows-autentisering måste delegering av säkerhetskonton stödjas.
2 Använder en befintlig, användardefinierad länkad serverinloggning skapad med sp_link_publication.

[ @login = ] N'login'

Inloggningen. @login är sysname med standardvärdet NULL. Denna parameter måste specificeras när @security_mode är 0.

[ @password = ] Nlösenord

Lösenordet. @password är sysname med standardvärdet NULL. Denna parameter måste specificeras när @security_mode är 0.

[ @distributor = ] N'distributor'

Namnet på distributören. @distributor är sysname, med en tom sträng som standard.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_link_publication används för att omedelbart uppdatera prenumerationer i transaktionell replikering.

sp_link_publication kan användas för både push- och pull-prenumerationer. Den kan kallas före eller efter att prenumerationen skapats. En post infogas eller uppdateras i MSsubscription_properties systemtabell.

För push-prenumerationer kan posten rensas upp av sp_subscription_cleanup. För pull-prenumerationer kan posten rensas upp av sp_droppullsubscription eller sp_subscription_cleanup. Du kan också ringa sp_link_publication med ett NULL lösenord för att rensa posten i MSsubscription_properties systemtabellen av säkerhetsskäl.

Standardläget som används av en omedelbar uppdaterande prenumerant när den ansluter till Publisher tillåter inte anslutning med Windows-autentisering. För att ansluta till ett Windows-autentiseringsläge måste en länkad server konfigureras till Publisher, och den omedelbar uppdaterande prenumeranten bör använda denna anslutning när prenumeranten uppdateras. Detta kräver att körningen sp_link_publication körs med @security_mode satt till 2. När du använder Windows-autentisering måste delegering av säkerhetskonton stödjas.

Exempel

-- 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

Permissions

Endast medlemmar i den fasta serverrollen sysadmin kan köra sp_link_publication.