다음을 통해 공유


sp_link_publication(Transact-SQL)

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

보안 정보보안 정보

게시자를 원격 배포자로 구성할 경우 job_login 및 job_password를 비롯한 모든 매개 변수에 제공된 값이 일반 텍스트로 배포자에게 보내집니다. 이 저장 프로시저를 실행하기 전에 게시자와 해당 원격 배포자 간 연결을 암호화해야 합니다. 자세한 내용은 SQL Server 연결 암호화를 참조하십시오.

중요 정보중요

구독자가 Microsoft SQL Server 2005 서비스 팩 1 이상을 실행하고 있으며 게시자가 이전 버전을 실행하고 있을 경우 특정 조건에서 이 저장 프로시저가 실패할 수 있습니다. 이 시나리오에서 저장 프로시저가 실패하면 게시자를 SQL Server 2005 서비스 팩 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'
    연결 대상이 되는 게시자의 이름입니다. publishersysname이며 기본값은 없습니다.

  • [ @publisher_db= ] 'publisher_db'
    연결 대상이 되는 게시자 데이터베이스의 이름입니다. publisher_dbsysname이며 기본값은 없습니다.

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

  • [ @security_mode= ] security_mode
    구독자가 즉시 업데이트를 위해 원격 게시자에 연결할 때 사용하는 보안 모드입니다. security_modeint이며 다음 값 중 하나일 수 있습니다. 가능하면 Windows 인증을 사용하십시오.

    설명

    0

    이 저장 프로시저에 loginpassword로 지정된 로그인을 SQL Server 인증에 사용합니다.

    참고참고
    이전 버전의 SQL Server에서는 동적 RPC(원격 프로시저 호출)를 지정하는 데 이 옵션을 사용합니다.

    1

    구독자에서 변경하는 사용자의 보안 컨텍스트(SQL Server 인증 또는 Windows 인증)를 사용합니다.

    참고참고
    이 계정은 충분한 권한을 설정한 상태로 게시자에도 존재해야 합니다. Windows 인증을 사용할 때는 보안 계정 위임이 지원되어야 합니다.

    2

    sp_link_publication을 사용하여 만든 기존의 사용자 정의 연결된 서버 로그인을 사용합니다.

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

  • [ @password = ] 'password'
    암호입니다. passwordsysname이며 기본값은 NULL입니다. security_mode0일 때는 이 매개 변수를 지정해야 합니다.

  • [ @distributor= ] 'distributor'
    배포자의 이름입니다. distributorsysname이며 기본값은 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 인증 모드로 연결하려면 연결된 서버가 게시자에 설정되어 있고 즉시 업데이트 구독자가 구독자를 업데이트할 때 이 연결을 사용해야 합니다. 이를 위해서는 security_mode = 2를 지정하고 sp_link_publication을 실행해야 합니다. 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'AdventureWorks2008R2';
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 AdventureWorks2008R2;
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'AdventureWorks2008R2Replica'; 
SET @subscriber = $(SubServer);

-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2008R2]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'pull', 
    @update_mode = N'failover';
GO

사용 권한

sysadmin 고정 서버 역할의 멤버만 sp_link_publication을 실행할 수 있습니다.