sp_link_publication(Transact-SQL)
적용 대상: SQL Server
게시자에 연결할 때 즉시 업데이트 구독의 동기화 트리거에 사용되는 구성 및 보안 정보를 설정합니다. 이 저장 프로시저는 구독 데이터베이스의 구독자에서 실행됩니다.
Important
원격 배포자를 사용하여 게시자를 구성하면 @job_login 및 @job_password 비롯한 모든 매개 변수에 제공된 값이 일반 텍스트로 배포자로 전송됩니다. 이 저장 프로시저를 실행하기 전에 게시자와 해당 원격 배포자 간 연결을 암호화해야 합니다. 자세한 내용은 연결 암호화에 대한 SQL Server 데이터베이스 엔진 구성을 참조하세요.
구문
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_mode 0
때 지정해야 합니다.
[ @password = ] N'password'
암호입니다. @password sysname이며 기본값은 .입니다NULL
. 이 매개 변수는 @security_mode 0
때 지정해야 합니다.
[ @distributor = ] N'distributor'
배포자의 이름입니다. @distributor sysname이며 기본값은 빈 문자열입니다.
반환 코드 값
0
(성공) 또는 1
(실패).
설명
sp_link_publication
는 트랜잭션 복제에서 구독을 즉시 업데이트하는 데 사용됩니다.
sp_link_publication
는 밀어넣기 및 끌어오기 구독 모두에 사용할 수 있습니다. 구독을 만들기 전이나 후에 호출할 수 있습니다. MSsubscription_properties 시스템 테이블에 항목이 삽입되거나 업데이트됩니다.
밀어넣기 구독의 경우 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
사용 권한
sysadmin 고정 서버 역할의 멤버만 실행할 sp_link_publication
수 있습니다.