다음을 통해 공유


sp_link_publication(Transact-SQL)

적용 대상: SQL Server

게시자에 연결할 때 즉시 업데이트 구독의 동기화 트리거에 사용되는 구성 및 보안 정보를 설정합니다. 이 저장 프로시저는 구독 데이터베이스의 구독자에서 실행됩니다.

Important

원격 배포자를 사용하여 게시자를 구성하면 @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_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수 있습니다.