sp_link_publication (Transact-SQL)
Область применения: SQL Server
Задает сведения о конфигурации и безопасности, применяемые триггерами синхронизации немедленно обновляемых подписок при подключении к издателю. Эта хранимая процедура выполняется на подписчике в базе данных подписки.
Внимание
При настройке издателя с удаленным распространителем значения, предоставленные для всех параметров, включая @job_login и @job_password, отправляются распространителю в виде обычного текста. Прежде чем выполнять эту хранимую процедуру, необходимо зашифровать соединение между издателем и его удаленным распространителем. Дополнительные сведения см. в разделе "Настройка SQL Server ядро СУБД для шифрования подключений".
Соглашения о синтаксисе Transact-SQL
Синтаксис
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' ]
[ ; ]
Аргументы
[ @publisher = ] N'publisher'
Имя издателя для ссылки. @publisher — sysname без значения по умолчанию.
[ @publisher_db = ] N'publisher_db'
Имя базы данных издателя для ссылки. @publisher_db — sysname без значения по умолчанию.
[ @publication = ] N'publication'
Имя публикации для ссылки. @publication — sysname без значения по умолчанию.
[ @security_mode = ] security_mode
Режим безопасности, используемый подписчиком для подключения к удаленному издателю для немедленного обновления. @security_mode является int и может быть одним из этих значений. По возможности используйте аутентификацию Windows.
значение | Описание |
---|---|
0 |
Использует проверку подлинности SQL Server с именем входа, указанным в этой хранимой процедуре, как @login и @password. Примечание. В предыдущих версиях SQL Server этот параметр использовался для указания динамического вызова удаленной процедуры (RPC). |
1 |
Использует контекст безопасности (проверка подлинности SQL Server или проверка подлинности Windows) пользователя, изменяющего подписчика. Примечание. Эта учетная запись также должна существовать на издателе с достаточными привилегиями. При использовании проверки подлинности Windows делегирование учетных записей безопасности должно поддерживаться. |
2 |
Использует существующее, определяемое пользователем имя входа для связанного сервера, созданное с помощью sp_link_publication . |
[ @login = ] N'login'
Имя входа. @login имеет имя sysname с значением по умолчаниюNULL
. Этот параметр должен быть указан при @security_mode0
.
[ @password = ] N'password'
Пароль. @password — sysname с значением по умолчаниюNULL
. Этот параметр должен быть указан при @security_mode0
.
[ @distributor = ] N'distributor'
Имя распространителя. @distributor — sysname, по умолчанию — пустая строка.
Значения кода возврата
0
(успешно) или 1
(сбой).
Замечания
sp_link_publication
используется при немедленном обновлении подписок в репликации транзакций.
sp_link_publication
можно использовать как для принудительной, так и для извлечения подписок. Ее можно вызывать как до, так и после создания подписки. Запись вставляется или обновляется в системной таблице MSsubscription_properties .
Для push-подписок запись можно очистить с помощью sp_subscription_cleanup. Для подписок на вытягивание запись можно очистить с помощью sp_droppullsubscription или sp_subscription_cleanup. Вы также можете вызвать sp_link_publication
NULL
пароль, чтобы очистить запись в системной таблице MSsubscription_properties для проблем с безопасностью.
Режим по умолчанию, используемый немедленно обновляемым подписчиком при подключении к издателю, не разрешает подключение с помощью проверки подлинности Windows. Для подключения в режиме с проверкой подлинности Windows на издателе должен быть настроен связанный сервер, и это соединение должно применяться для немедленного обновления подписчика. Для этого требуется sp_link_publication
выполнить @security_mode задать значение 2
. При использовании проверки подлинности Windows делегирование учетных записей безопасности должно поддерживаться.
Примеры
-- 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
Разрешения
Могут выполняться sp_link_publication
только члены предопределенных ролей сервера sysadmin.