Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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.