트랜잭션 게시에 대해 업데이트할 수 있는 구독 설정
적용 대상:SQL Server
이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server에서 트랜잭션 게시에 대한 구독을 업데이트하는 방법을 설명합니다.
참고 항목
이 기능은 이후 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요.
시작하기 전에
보안
가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다. 스크립트 파일에 자격 증명을 저장해야 하는 경우 무단 액세스를 방지하기 위해 파일을 보호해야 합니다.
SQL Server Management Studio 사용
새 게시 마법사의 게시 유형 페이지에서 트랜잭션 게시에 대한 구독을 업데이트할 수 있습니다.
구독 업데이트를 사용하려면 새 구독 마법사에서도 옵션을 구성해야 합니다.
구독 업데이트를 설정하려면
새 게시 마법사의 게시 유형 페이지에서 업데이트할 수 있는 구독이 있는 트랜잭션 게시를 선택합니다.
에이전트 보안 페이지에서 스냅샷 에이전트, 로그 판독기 에이전트 및 큐 판독기 에이전트에 대한 보안 설정을 지정합니다. 큐 판독기 에이전트가 실행되는 계정에 필요한 권한에 대한 자세한 내용은 복제 에이전트 보안 모델을 참조하세요.
참고 항목
즉시 업데이트 구독만 사용하는 경우에도 큐 판독기 에이전트가 구성됩니다.
Transact-SQL 사용
복제본(replica)tion 저장 프로시저를 사용하여 프로그래밍 방식으로 트랜잭션 게시를 만들 때 즉시 또는 지연 업데이트 구독을 사용하도록 설정할 수 있습니다.
즉시 업데이트 구독을 지원하는 게시를 만들려면
필요한 경우 게시 데이터베이스에 대한 로그 판독기 에이전트 작업을 만듭니다.
게시 데이터베이스에 대한 로그 판독기 에이전트 작업이 이미 있는 경우 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_스냅샷(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 자격 증명을 지정합니다. 이러한 자격 증명은 큐 판독기 에이전트가 게시자 및 구독자에 연결할 때 사용됩니다. 자세한 내용은 Replication Agent Security Model을 참조하세요.
매개 변수 @allow_queued_tran true 값과 @conflict_policy 대한 pub wins, sub reinit 또는 sub wins값을 지정하여 sp_addpublication 실행(Transact-SQL)을 실행합니다.
게시자에서 sp_addpublication_스냅샷(Transact-SQL)를 실행합니다. @publication 3단계에서 사용되는 게시 이름과 @스냅샷_job_name 및 @password 대해 스냅샷 에이전트 실행되는 Windows 자격 증명을 지정합니다. 에이전트가 게시자에 연결할 때 SQL Server 인증을 사용하는 경우 @publisher_security_mode 값 0 과 @publisher_login 및 @publisher_password 대한 SQL Server 로그인 정보도 지정해야 합니다. 이렇게 하면 게시에 대해 스냅샷 에이전트 작업이 만들어집니다.
게시에 아티클을 추가합니다. 자세한 내용은 아티클 정의를 참조 하세요.
구독자에서 이 게시에 대한 업데이트 구독을 만듭니다.
지연 업데이트 구독을 허용하는 게시에 대한 충돌 정책을 변경하려면
- 게시 데이터베이스의 게시자에서 sp_changepublication(Transact-SQL)를 실행합니다. @property 대해 conflict_policy 값을 지정하고 @value 대해 펍 승리, 하위 다시 설정 또는 하위 우선의 원하는 충돌 정책 모드를 지정합니다.
예제(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'AdventureWorks2022';
SET @publication = N'AdvWorksProductTran';
SET @login = $(Login);
SET @password = $(Password);
USE [AdventureWorks2022]
-- 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 [AdventureWorks2022]
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)
트랜잭션 복제
트랜잭션 복제에 대한 업다이블 구독
게시 만들기
트랜잭션 게시에 업데이트할 수 있는 구독 만들기
트랜잭션 복제에 대한 업다이블 구독
스크립팅 변수와 함께 sqlcmd 사용
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기