Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Define a configuração e a informação de segurança usadas pelos gatilhos de sincronização de atualização imediata das subscrições ao ligar-se ao Publisher. Este procedimento armazenado é executado no Assinante na base de dados de subscrição.
Importante
Quando configura um Publisher com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, incluindo @job_login e @job_password, são enviados ao Distribuidor em texto simples. Deve encriptar a ligação entre o Publisher e o seu Distribuidor remoto antes de executar este procedimento armazenado. Para obter mais informações, consulte Configurar o Mecanismo de Banco de Dados do SQL Server para criptografar conexões.
Transact-SQL convenções de sintaxe
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'editor'
O nome do Publisher para linkar. @publisher é sysname, sem padrão.
[ @publisher_db = ] N'publisher_db'
O nome da base de dados Publisher para ligar a ele. @publisher_db é sysname, sem padrão.
[ @publication = ] N'publicação'
O nome da publicação para a qual se deve fazer o link. @publication é sysname, sem padrão.
@security_mode [ = ] security_mode
O modo de segurança usado pelo Assinante para se ligar a um Publisher remoto para atualização imediata. @security_mode é int, e pode ser um desses valores. Quando possível, use a autenticação do Windows.
| Valor | Description |
|---|---|
0 |
Utiliza SQL Server Autenticação com o login especificado neste procedimento armazenado como @login e @password. Nota: Em versões anteriores do SQL Server, esta opção era usada para especificar uma chamada dinâmica de procedimento remoto (RPC). |
1 |
Utiliza o contexto de segurança (Autenticação SQL Server ou Autenticação Windows) do utilizador que faz a alteração no Assinante. Nota: Esta conta deve também existir no Publisher com privilégios suficientes. Quando usa a Autenticação Windows, a delegação de contas de segurança deve ser suportada. |
2 |
Utiliza um login de servidor ligado definido pelo utilizador criado usando sp_link_publication. |
@login [ = ] N'login'
O login.
@login é sysname, com um padrão de NULL. Este parâmetro deve ser especificado quando @security_mode é 0.
[ @password = ] N'senha'
A senha.
@password é sysname, com um padrão de NULL. Este parâmetro deve ser especificado quando @security_mode é 0.
@distributor [ = ] N'distribuidor'
O nome do Distribuidor. @distributor é sysname, com o padrão de uma cadeia vazia.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Remarks
sp_link_publication é usado pela atualização imediata de subscrições na replicação transacional.
sp_link_publication pode ser usado tanto para subscrições push como pull. Pode ser chamada antes ou depois da criação da subscrição. Uma entrada é inserida ou atualizada na tabela do sistema MSsubscription_properties .
Para subscrições push, a entrada pode ser limpa por sp_subscription_cleanup. Para subscrições extraídas, a entrada pode ser limpa por sp_droppullsubscription ou sp_subscription_cleanup. Também pode ligar sp_link_publication com uma NULL palavra-passe para apagar a entrada na tabela do sistema MSsubscription_properties por questões de segurança.
O modo predefinido usado por um Assinante que atualiza imediatamente quando se liga ao Publisher não permite uma ligação usando a Autenticação do Windows. Para se ligar a um modo de Autenticação Windows, tem de ser configurado um servidor ligado ao Publisher, e o Assinante que atualiza imediatamente deve usar esta ligação ao atualizar o Assinante. Isto requer que o sp_link_publication seja executado com @security_mode definido em 2. Quando usa a Autenticação Windows, a delegação de contas de segurança deve ser suportada.
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
Permissions
Somente membros da função de servidor fixa sysadmin podem executar sp_link_publicationo .