트랜잭션 게시에 대해 업데이트할 수 있는 구독 설정
이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 2014년 SQL Server 트랜잭션 게시에 대한 구독 업데이트를 사용하도록 설정하는 방법을 설명합니다.
참고
Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.
시작하기 전에
보안
가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다. 자격 증명을 스크립트 파일에 저장해야 하는 경우에는 파일에 무단으로 액세스하지 못하도록 보안을 설정해야 합니다.
SQL Server Management Studio 사용
새 게시 마법사의 게시 유형 페이지에서 트랜잭션 게시에 대해 구독 업데이트를 설정합니다. 이 마법사를 사용하는 방법에 대한 자세한 내용은 게시 만들기를 참조하세요. 게시가 생성된 다음에는 구독 업데이트를 설정할 수 없습니다.
구독 업데이트를 사용하려면 새 구독 마법사에서도 옵션을 구성해야 합니다. 자세한 내용은 트랜잭션 게시에 대해 업데이트할 수 있는 구독 만들기을 참조하세요.
구독 업데이트를 설정하려면
새 게시 마법사의 게시 유형 페이지에서 업데이트할 수 있는 구독이 있는 트랜잭션 게시를 선택합니다.
에이전트 보안 페이지에서 스냅샷 에이전트, 로그 판독기 에이전트 및 큐 판독기 에이전트에 대한 보안 설정을 지정합니다. 큐 판독기 에이전트가 실행되는 계정에 필요한 사용 권한에 대한 자세한 내용은 Replication Agent Security Model을 참조하세요.
참고
즉시 업데이트 구독만 사용하는 경우에도 큐 판독기 에이전트가 구성됩니다.
Transact-SQL 사용
복제 저장 프로시저를 사용하여 프로그래밍 방식으로 트랜잭션 게시를 만들 때 즉시 업데이트 구독 또는 지연 업데이트 구독을 설정할 수 있습니다.
즉시 업데이트 구독을 지원하는 게시를 만들려면
필요한 경우 게시 데이터베이스에 대한 로그 판독기 에이전트 작업을 만듭니다.
게시 데이터베이스에 대한 로그 판독기 에이전트 작업이 이미 존재하면 2단계를 실행합니다.
게시된 데이터베이스에 대한 로그 판독기 에이전트 작업이 있는지 확실하지 않은 경우 게시 데이터베이스의 게시자에서 sp_helplogreader_agent(Transact-SQL) 를 실행합니다. 결과 집합이 비어 있으면 로그 판독기 에이전트 작업을 만들어야 합니다.
게시자에서 sp_addlogreader_agent(Transact-SQL)를 실행합니다. 에이전트가 @job_name 및@password 대해 실행되는 Microsoft Windows 자격 증명을 지정합니다. 에이전트가 게시자에 연결할 때 SQL Server 인증을 사용하는 경우 @publisher_security_mode 값 0과 @publisher_login및 @publisher_password 대한 Microsoft SQL Server 로그인 정보도 지정해야 합니다.
매개 변수 @allow_sync_tran true 값을 지정하여 sp_addpublication(Transact-SQL)를 실행합니다.
게시자에서 sp_addpublication_snapshot(Transact-SQL)을 실행합니다. @publication 2단계에서 사용되는 게시 이름과 @job_name 및 @password대해 스냅샷 에이전트 실행되는 Windows 자격 증명을 지정합니다. 에이전트가 게시자에 연결할 때 SQL Server 인증을 사용하는 경우 @publisher_security_mode 값 0과 @publisher_login및 @publisher_password 대한 SQL Server 로그인 정보도 지정해야 합니다. 이렇게 하면 게시에 대해 스냅샷 에이전트 작업이 만들어집니다.
아티클을 게시에 추가합니다. 자세한 내용은 아티클을 정의을 참조하세요.
구독자에서 이 게시에 대한 업데이트 구독을 만듭니다. 자세한 내용은 트랜잭션 게시에 대해 업데이트할 수 있는 구독 만들기을 참조하세요.
지연 업데이트 구독을 지원하는 게시를 만들려면
필요한 경우 게시 데이터베이스에 대한 로그 판독기 에이전트 작업을 만듭니다.
게시 데이터베이스에 대한 로그 판독기 에이전트 작업이 이미 존재하면 2단계를 실행합니다.
게시된 데이터베이스에 대한 로그 판독기 에이전트 작업이 있는지 확실하지 않은 경우 게시 데이터베이스의 게시자에서 sp_helplogreader_agent(Transact-SQL) 를 실행합니다. 결과 집합이 비어 있으면 로그 판독기 에이전트 작업을 만들어야 합니다.
게시자에서 sp_addlogreader_agent(Transact-SQL)를 실행합니다. 에이전트가 @job_name 및@password 대해 실행되는 Windows 자격 증명을 지정합니다. 에이전트가 게시자에 연결할 때 SQL Server 인증을 사용하는 경우 @publisher_security_mode 값 0과 @publisher_login및 @publisher_password 대한 SQL Server 로그인 정보도 지정해야 합니다.
필요한 경우 배포자에 대한 큐 판독기 에이전트 작업을 만듭니다.
배포 데이터베이스에 대한 큐 판독기 에이전트 작업이 이미 존재하면 3단계를 실행합니다.
배포 데이터베이스에 대한 큐 판독기 에이전트 작업이 있는지 확실하지 않은 경우 배포 데이터베이스의 배포자에서 sp_helpqreader_agent(Transact-SQL) 를 실행합니다. 결과 집합이 비어 있으면 큐 판독기 에이전트 작업을 만들어야 합니다.
배포자에서 sp_addqreader_agent(Transact-SQL)를 실행합니다. 에이전트가 @job_name 및@password 대해 실행되는 Windows 자격 증명을 지정합니다. 이러한 자격 증명은 큐 판독기 에이전트가 게시자 및 구독자에 연결할 때 사용됩니다. 자세한 내용은 복제 에이전트 보안 모델을 참조하세요.
매개 변수 @allow_queued_tran true 값과 @conflict_policy 대한 pub wins, sub reinit 또는 sub wins 값을 지정하여 sp_addpublication(Transact-SQL)를 실행합니다.
게시자에서 sp_addpublication_snapshot(Transact-SQL)을 실행합니다. @publication 3단계에서 사용되는 게시 이름과 @snapshot_job_name 및 @password 대해 스냅샷 에이전트 실행되는 Windows 자격 증명을 지정합니다. 에이전트가 게시자에 연결할 때 SQL Server 인증을 사용하는 경우 @publisher_security_mode 값 0과 @publisher_login및 @publisher_password 대한 SQL Server 로그인 정보도 지정해야 합니다. 이렇게 하면 게시에 대해 스냅샷 에이전트 작업이 만들어집니다.
아티클을 게시에 추가합니다. 자세한 내용은 아티클을 정의을 참조하세요.
구독자에서 이 게시에 대한 업데이트 구독을 만듭니다. 자세한 내용은 트랜잭션 게시에 대해 업데이트할 수 있는 구독 만들기을 참조하세요.
지연 업데이트 구독을 허용하는 게시에 대한 충돌 정책을 변경하려면
- 게시 데이터베이스의 게시자에서 sp_changepublication(Transact-SQL)를 실행합니다. @property conflict_policy 값을 지정하고 @value 대해 원하는 충돌 정책 모드인 pub wins, sub reinit 또는 sub wins를 지정합니다.
예제(Transact-SQL)
이 예에서는 즉시 업데이트 끌어오기 구독과 지연 업데이트 끌어오기 구독을 모두 지원하는 게시를 만듭니다.
-- To avoid storing the login and password in the script file, the values
-- are passed into SQLCMD as scripting variables. 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".
--Declarations for adding a transactional publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2012';
SET @publication = N'AdvWorksProductTran';
SET @login = $(Login);
SET @password = $(Password);
USE [AdventureWorks]
-- Enable transactional replication on the publication database.
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'publish',
@value = N'true';
-- Execute sp_addlogreader_agent to create the agent job.
EXEC sp_addlogreader_agent
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
-- Create a transactional publication that supports immediate updating,
-- queued updating, and pull subscriptions.
EXEC sp_addpublication
@publication = @publication,
@status = N'active',
@allow_sync_tran = N'true',
@allow_queued_tran = N'true',
@allow_pull = N'true',
@independent_agent = N'true',
-- Explicitly declare the related default properties
@conflict_policy = N'pub wins';
-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
GO
--Declarations for adding an article.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @owner = N'Production';
-- Add a horizontally and vertically filtered article for the Product table.
USE [AdventureWorks2012]
EXEC sp_addarticle
@publication = @publication,
@article = @article,
@source_table = @article,
@vertical_partition = N'false',
@type = N'logbased',
@source_owner = @owner,
@destination_owner = @owner;
GO
참고 항목
지연 업데이트 충돌 해결 옵션 설정(SQL Server Management Studio)
트랜잭션 복제에 대한 게시 유형
Updatable Subscriptions for Transactional Replication
게시 만들기
트랜잭션 게시에 대해 업데이트할 수 있는 구독 만들기
Updatable Subscriptions for Transactional Replication
스크립팅 변수와 함께 sqlcmd 사용