Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Stelt de configuratie- en beveiligingsinformatie in die wordt gebruikt door synchronisatietriggers van direct bijgewerkte abonnementen bij verbinding met de Publisher. Deze opgeslagen procedure wordt uitgevoerd bij de abonnee in de abonnementsdatabase.
Important
Wanneer je een Publisher configureert met een externe Distributor, worden de waarden die voor alle parameters, inclusief @job_login en @job_password, als platte tekst naar de Distributor gestuurd. Versleutel de verbinding tussen publisher en de externe distributeur voordat u deze opgeslagen procedure uitvoert. Zie SQL Server Database Engine configureren voor het versleutelen van verbindingenvoor meer informatie.
Transact-SQL syntaxis-conventies
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'uitgever'
De naam van de Publisher om naar te linken. @publisher is sysname, zonder standaardinstelling.
[ @publisher_db = ] N'publisher_db'
De naam van de Publisher-database om naar te linken. @publisher_db is systeemnaam, zonder standaard.
[ @publication = ] N'publicatie'
De naam van de publicatie om naar te linken. @publication is sysname, zonder standaard.
[ @security_mode = ] security_mode
De beveiligingsmodus die door de abonnee wordt gebruikt om verbinding te maken met een externe Publisher voor directe updates. @security_mode is int en kan een van deze waarden zijn. Gebruik waar mogelijk Windows-verificatie.
| Value | Description |
|---|---|
0 |
Gebruikt SQL Server Authenticatie met de login die in deze opgeslagen procedure is gespecificeerd als @login en @password. Opmerking: In eerdere versies van SQL Server werd deze optie gebruikt om een dynamische remote procedure call (RPC) te specificeren. |
1 |
Gebruikt de beveiligingscontext (SQL Server Authentication of Windows Authentication) van de gebruiker die de wijziging aanbrengt bij de abonnee. Opmerking: Dit account moet ook bestaan bij de Publisher met voldoende privileges. Wanneer je Windows-authenticatie gebruikt, moet het delegeren van beveiligingsaccounts worden ondersteund. |
2 |
Gebruikt een bestaande, door de gebruiker gedefinieerde gekoppelde serverlogin die is aangemaakt met sp_link_publication. |
[ @login = ] N'login'
De aanmelding.
@login is sysname, met een standaardwaarde van NULL. Deze parameter moet worden gespecificeerd wanneer @security_mode is 0.
[ @password = ] N'wachtwoord'
Het wachtwoord.
@password is sysname, met een standaardwaarde van NULL. Deze parameter moet worden gespecificeerd wanneer @security_mode is 0.
[ @distributor = ] N'distributeur'
De naam van de distributeur. @distributor is sysname, met als standaard een lege string.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Remarks
sp_link_publication wordt gebruikt door direct bijwerkende abonnementen bij transactionele replicatie.
sp_link_publication kan gebruikt worden voor zowel push- als pull-abonnementen. Het kan worden aangeroepen vóór of na het aanmaken van het abonnement. Een invoer wordt ingevoegd of bijgewerkt in de MSsubscription_properties systeemtabel.
Voor push-abonnementen kan de vermelding door sp_subscription_cleanup worden opgeschoond. Voor pull-abonnementen kan de vermelding worden opgeschoond door sp_droppullsubscription of sp_subscription_cleanup. Je kunt ook bellen sp_link_publication met een NULL wachtwoord om de vermelding in de MSsubscription_properties systeemtabel te wissen vanwege beveiligingsproblemen.
De standaardmodus die wordt gebruikt door een direct updatende abonnee wanneer deze verbinding maakt met de Publisher, staat geen verbinding toe via Windows Authentication. Om verbinding te maken met een modus van Windows-authenticatie, moet een gekoppelde server worden ingesteld op de Publisher, en de direct updatende abonnee moet deze verbinding gebruiken bij het updaten van de abonnee. Dit vereist dat de sp_link_publication wordt uitgevoerd met @security_mode ingesteld op 2. Wanneer je Windows-authenticatie gebruikt, moet het delegeren van beveiligingsaccounts worden ondersteund.
Examples
-- 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
toestemmingen
Alleen leden van de vaste serverrol sysadmin kunnen worden uitgevoerd sp_link_publication.