sp_link_publication(Transact-SQL)

적용 대상:SQL Server

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

Important

원격 배포자를 사용하여 게시자를 구성할 때 job_login 및 job_password 비롯한 모든 매개 변수에 제공된 값은 일반 텍스트로 배포자로 전송됩니다. 이 저장 프로시저를 실행하기 전에 게시자와 해당 원격 배포자 간의 연결을 암호화해야 합니다. 자세한 내용은 데이터베이스 엔진에 대한 암호화된 연결 사용(SQL Server 구성 관리자)을 참조하세요.

Important

특정 조건에서 구독자가 Microsoft SQL Server 2005(9.x) 서비스 팩 1 이상을 실행하고 게시자가 이전 버전을 실행하는 경우 이 저장 프로시저가 실패할 수 있습니다. 이 시나리오에서 저장 프로시저가 실패하면 게시자를 SQL Server 2005(9.x) 서비스 팩 1 이상으로 업그레이드합니다.

Transact-SQL 구문 표기 규칙

구문

  
sp_link_publication [ @publisher = ] 'publisher'   
        , [ @publisher_db = ] 'publisher_db'   
        , [ @publication = ] 'publication'   
        , [ @security_mode = ] security_mode  
    [ , [ @login = ] 'login' ]  
    [ , [ @password = ]'password' ]  
    [ , [ @distributor = ] 'distributor' ]  

인수

[ @publisher = ] 'publisher'연결할 게시자의 이름입니다. 게시자는 sysname이며 기본값은 없습니다.

[ @publisher_db = ] 'publisher_db'연결할 게시자 데이터베이스의 이름입니다. publisher_db 기본값이 없는 sysname입니다.

[ @publication = ] 'publication'연결할 게시의 이름입니다. 게시는 sysname이며 기본값은 없습니다.

[ @security_mode = ] security_mode 즉시 업데이트하기 위해 구독자가 원격 게시자에 연결하는 데 사용하는 보안 모드입니다. security_mode int이며 이러한 값 중 하나일 수 있습니다. 가능하면 Windows 인증을 사용하세요.

설명
0 이 저장 프로시저에 지정된 로그인과 함께 로그인 및 암호 SQL Server 인증을 사용합니다.

참고: 이전 버전의 SQL Server에서는 이 옵션을 사용하여 RPC(동적 원격 프로시저 호출)를 지정했습니다.
1 구독자에서 변경한 사용자의 보안 컨텍스트(SQL Server 인증 또는 Windows 인증)를 사용합니다.

참고: 이 계정은 충분한 권한이 있는 게시자에도 있어야 합니다. Windows 인증을 사용하는 경우 보안 계정 위임을 지원해야 합니다.
2 sp_link_publication 사용하여 만든 기존 사용자 정의 연결된 서버 로그인을 사용합니다.

[ @login = ] 'login' 로그인입니다. loginsysname이며 기본값은 NULL입니다. 이 매개 변수는 security_mode 0지정해야 합니다.

[ @password = ] 'password' 암호입니다. 암호sysname이며 기본값은 NULL입니다. 이 매개 변수는 security_mode 0지정해야 합니다.

[ @distributor = ] 'distributor' 배포자의 이름입니다. 배포 자 이름은 sysname이며 기본값은 NULL입니다.

반환 코드 값

0 (성공) 또는 1 (실패)

설명

sp_link_publication 트랜잭션 복제에서 구독을 즉시 업데이트하는 데 사용됩니다.

sp_link_publication 밀어넣기 및 끌어오기 구독 모두에 사용할 수 있습니다. 구독을 만들기 전이나 후에 호출할 수 있습니다. 항목이 MSsubscription_properties(Transact-SQL) 시스템 테이블에 삽입되거나 업데이트됩니다.

밀어넣기 구독의 경우 sp_subscription_cleanup(Transact-SQL)를 통해 항목을 정리할 수 있습니다. 끌어오기 구독의 경우 sp_droppullsubscription(Transact-SQL) 또는 sp_subscription_cleanup(Transact-SQL)를 통해 항목을 정리할 수 있습니다. NULL 암호를 사용하여 sp_link_publication 호출하여 보안 문제를 위해 MSsubscription_properties(Transact-SQL) 시스템 테이블의 항목을 지울 수도 있습니다.

게시자에 연결할 때 즉시 업데이트 구독자가 사용하는 기본 모드는 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 실행할 수 있습니다.

참고 항목

sp_droppullsubscription(Transact-SQL)
sp_helpsubscription_properties(Transact-SQL)
sp_subscription_cleanup(Transact-SQL)
시스템 저장 프로시저(Transact-SQL)