다음을 통해 공유


sp_changemergepublication(Transact-SQL)

적용 대상: SQL Server

병합 게시의 속성을 변경합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.

Transact-SQL 구문 표기 규칙

구문

sp_changemergepublication
    [ @publication = ] N'publication'
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]

인수

[ @publication = ] N'publication'

게시의 이름 @publication 기본값이 없는 sysname입니다.

[ @property = ] N'property'

지정된 게시에 대해 변경할 속성입니다. @property sysname이며 다음 표에 나열된 값 중 하나일 수 있습니다.

[ @value = ] N'value'

지정된 속성의 새 값입니다. @value 기본값NULL인 nvarchar(255)입니다.

다음 표에 나열된 값 중 하나일 수 있습니다.

이 표에서는 변경할 수 있는 게시의 속성 및 그 속성의 값에 대한 제한에 대해 설명합니다.

속성 설명
allow_anonymous true 익명 구독을 허용합니다.
false 익명 구독은 허용되지 않습니다.
allow_partition_realignment true 삭제는 더 이상 구독자의 파티션에 속하지 않는 데이터를 제거하여 파티션 변경 결과를 반영하기 위해 구독자에게 전송됩니다. 이 옵션은 기본 동작입니다.
false 이전 파티션의 데이터는 구독자에 남아 있습니다. 여기서 게시자의 이 데이터를 변경해도 이 구독자에 복제되지 않습니다. 대신 구독자에서 변경한 내용이 게시자에 복제됩니다. 기록 목적으로 데이터에 액세스할 수 있어야 하는 경우 이전 파티션에서 구독의 데이터를 유지하는 데 사용됩니다.
allow_pull true 끌어오기 구독은 지정된 게시에 대해 허용됩니다.
false 끌어오기 구독은 지정된 게시에 대해 허용되지 않습니다.
allow_push true 지정된 게시에 대해 밀어넣기 구독을 허용합니다.
false 밀어넣기 구독은 지정된 게시에 대해 허용되지 않습니다.
allow_subscriber_initiated_snapshot true 구독자는 스냅샷 프로세스를 시작할 수 있습니다.
false 구독자는 스냅샷 프로세스를 시작할 수 없습니다.
allow_subscription_copy true 이 게시를 구독하는 구독 데이터베이스를 복사할 수 있습니다.
false 이 게시를 구독하는 구독 데이터베이스는 복사할 수 없습니다.
allow_synctoalternate true 대체 동기화 파트너가 이 게시자를 동기화할 수 있도록 허용합니다.
false 대체 동기화 파트너가 이 게시자를 동기화하도록 허용하지 않습니다.
allow_web_synchronization true 구독은 HTTPS를 통해 동기화할 수 있습니다.
false 구독은 HTTPS를 통해 동기화할 수 없습니다.
alt_snapshot_folder 스냅샷의 대체 폴더 위치를 지정합니다.
automatic_reinitialization_policy 1 구독을 다시 초기화하기 전에 구독자에서 변경 내용이 업로드됩니다.
0 변경 내용을 업로드하지 않고 구독을 다시 초기화합니다.
centralized_conflicts true 모든 충돌 레코드는 게시자에 저장됩니다. 이 속성을 변경하면 기존 구독자를 다시 초기화해야 합니다.
false 충돌 레코드는 충돌 해결에서 손실된 서버에 저장됩니다. 이 속성을 변경하면 기존 구독자를 다시 초기화해야 합니다.
compress_snapshot true 대체 스냅샷 폴더의 스냅샷을 CAB 형식으로 압축합니다. 기본 스냅샷 폴더의 스냅샷은 압축할 수 없습니다. 이 속성을 변경하려면 새 스냅샷이 필요합니다.
false 기본적으로 스냅샷은 압축되지 않습니다. 이 속성을 변경하려면 새 스냅샷이 필요합니다.
conflict_logging publisher 충돌 레코드는 게시자에 저장됩니다.
subscriber 충돌 레코드가 충돌을 발생시킨 구독자에 저장됩니다. SQL Server Compact 구독자에 대해서는 지원되지 않습니다.
both 충돌 레코드는 게시자와 구독자 모두에 저장됩니다.
conflict_retention 충돌이 유지되는 보존 기간(일)을 지정하는 int입니다. 충돌 정리가 필요하지 않음을 의미하도록 0 설정합니다conflict_retention.
description 게시에 대한 설명입니다.
dynamic_filters true 동적 절에 따라 게시를 필터링합니다.
false 게시는 동적으로 필터링되지 않습니다.
enabled_for_internet true 인터넷에서 게시를 사용할 수 있습니다. FTP(파일 전송 프로토콜)를 사용하여 스냅샷 파일을 구독자에게 전송할 수 있습니다. 게시에 대한 동기화 파일은 디렉터리에 배치 C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp 됩니다.
false 인터넷에서는 게시를 사용할 수 없습니다.
ftp_address 배포자에 대한 FTP 서비스의 네트워크 주소입니다. 게시 스냅샷 파일이 저장될 위치를 지정합니다.
ftp_login FTP 서비스에 연결하는 데 사용되는 사용자 이름입니다.
ftp_password FTP 서비스에 연결하는 데 사용되는 사용자 암호입니다.
ftp_port 배포자에 대한 FTP 서비스의 포트 번호입니다. 게시 스냅샷 파일이 저장되는 FTP 사이트의 TCP 포트 번호를 지정합니다.
ftp_subdirectory 게시에서 FTP를 사용하여 스냅샷 전파를 지원하는 경우 스냅샷 파일이 만들어지는 위치를 지정합니다.
generation_leveling_threshold int 하나의 생성에 포함되는 변경 내용 수를 지정합니다. 세대는 게시자 또는 구독자에게 전달되는 변경 내용의 컬렉션입니다.
keep_partition_changes true 동기화가 최적화되고 변경된 파티션에 행이 있는 구독자만 영향을 받습니다. 이 속성을 변경하려면 새 스냅샷이 필요합니다.
false 동기화는 최적화되지 않으며, 파티션에서 데이터가 변경될 때 구독자에게 전송되는 파티션이 확인됩니다. 이 속성을 변경하려면 새 스냅샷이 필요합니다.
max_concurrent_merge 게시에 대해 실행할 수 있는 최대 동시 병합 프로세스 수를 나타내는 int입니다. 0이면 제한이 없습니다. 이보다 많은 수의 병합 프로세스가 동시에 실행되도록 예약된 경우 현재 전체 프로세스가 완료될 때까지 초과 작업이 큐에 배치됩니다.
max_concurrent_dynamic_snapshots 매개 변수가 있는 행 필터를 사용하는 병합 게시에 대해 동시에 실행할 수 있는 필터링된 데이터 스냅샷을 생성하기 위한 최대 스냅샷 세션 수를 나타내는 int입니다. 이 경우 0제한이 없습니다. 이 수 이상의 스냅샷 프로세스가 동시에 실행되도록 예약된 경우 현재 병합 프로세스가 완료될 때까지 초과 작업이 큐에 배치됩니다.
post_snapshot_script 파일 위치에 대한 포인터를 .sql 지정합니다. 배포 에이전트 또는 병합 에이전트 초기 동기화 중에 복제된 다른 모든 개체 스크립트와 데이터가 적용된 후 스냅샷 후 스크립트를 실행합니다. 이 속성을 변경하려면 새 스냅샷이 필요합니다.
pre_snapshot_script 파일 위치에 대한 포인터를 .sql 지정합니다. 병합 에이전트는 구독자에서 스냅샷을 적용할 때 복제된 개체 스크립트를 실행하기 전에 프리 스냅샷 스크립트를 실행합니다. 이 속성을 변경하려면 새 스냅샷이 필요합니다.
publication_compatibility_level 100RTM SQL Server 2008(10.0.x)
90RTM SQL Server 2005(9.x)
publish_to_activedirectory true 이 매개 변수는 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 유지 관리됩니다. Active Directory에 게시 정보를 더 이상 추가할 수 없습니다.
false Active Directory에서 게시 정보를 제거합니다.
replicate_ddl 1 게시자에서 실행되는 DDL(데이터 정의 언어) 문이 복제됩니다.
0 DDL 문은 복제되지 않습니다.
retention 지정된 발행물의 변경 내용을 저장할 단위 수를 retention_period_unit 나타내는 int입니다. 구독이 보존 기간 내에 동기화되지 않고 수신된 보류 중인 변경 내용이 배포자의 정리 작업으로 제거된 경우 구독이 만료되고 다시 초기화되어야 합니다. 허용되는 최대 보존 기간은 현재 날짜부터 9999년 12월 31일까지의 일 수입니다.

참고: 병합 게시의 보존 기간은 서로 다른 표준 시간대의 구독자를 수용할 수 있도록 24시간의 유예 기간을 둡니다.
retention_period_unit day 보존 기간은 일 단위로 지정됩니다.
week 보존 기간(주)을 지정합니다.
month 보존 기간은 월 단위로 지정됩니다.
year 보존 기간은 연도로 지정됩니다.
snapshot_in_defaultfolder true 스냅샷 파일은 기본 스냅샷 폴더에 저장됩니다.
false 스냅샷 파일은 에 의해 alt_snapshot_folder지정된 대체 위치에 저장됩니다. 이 조합은 스냅샷 파일이 기본 위치와 대체 위치 모두에 저장되도록 지정합니다.
snapshot_ready true 게시에 대한 스냅샷을 사용할 수 있습니다.
false 게시에 대한 스냅샷을 사용할 수 없습니다.
status active 게시가 활성 상태입니다.
inactive 게시가 비활성 상태입니다.
sync_mode native 또는

bcp native
모든 테이블의 기본 모드 대량 복사 프로그램 출력이 초기 스냅샷에 사용됩니다.
character

또는 bcp character
모든 테이블의 문자 모드 대량 복사 프로그램 출력은 SQL Server가 아닌 모든 구독자에 필요한 초기 스냅샷에 사용됩니다.
use_partition_groups

참고: 파티션 그룹을 사용한 후 사용 setupbelongs으로 되돌리고 설정한 use_partition_groups=false changemergearticle경우 스냅샷을 생성한 후에 올바르게 반영되지 않을 수 있습니다. 스냅샷에서 생성된 트리거는 파티션 그룹을 준수합니다.

이 시나리오의 해결 방법은 상태를 비활성으로 설정하고 수정한 use_partition_groups다음 상태를 활성으로 설정하는 것입니다.
true 게시는 사전 계산 파티션을 사용합니다.
false 게시는 미리 계산된 파티션을 사용하지 않습니다.
validate_subscriber_info 구독자 정보를 검색하는 데 사용되는 함수를 나열합니다. 그런 다음 구독자에 사용되는 동적 필터링 조건의 유효성을 검사하여 정보가 일관되게 분할되었는지 확인합니다.
web_synchronization_url 웹 동기화에 사용되는 인터넷 URL의 기본값입니다.
NULL(기본값) @property 지원되는 값 목록을 반환합니다.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

이 저장 프로시저에서 수행한 작업이 기존 스냅샷을 무효화할 수 있음을 인정합니다. @force_invalidate_snapshot 비트이며 기본값은 .입니다0.

  • 0 는 게시를 변경해도 스냅샷이 무효화되지 않도록 지정합니다. 저장 프로시저에서 변경에 새 스냅샷이 필요하다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.

  • 1 는 게시를 변경하면 스냅샷이 무효화될 수 있음을 지정합니다. 새 스냅샷이 필요한 기존 구독이 있는 경우 기존 스냅샷을 사용되지 않는 것으로 표시하고 새 스냅샷을 생성할 수 있는 권한을 부여합니다.

변경될 때 새 스냅샷을 생성해야 하는 속성은 설명 섹션을 참조하세요.

[ @force_reinit_subscription = ] force_reinit_subscription

이 저장 프로시저에서 수행한 작업에 기존 구독을 다시 초기화해야 할 수 있음을 인정합니다. @force_reinit_subscription 비트이며 기본값은 .입니다0.

  • 0 는 게시를 변경해도 구독을 다시 초기화하지 않아도 되도록 지정합니다. 저장 프로시저가 변경 시 기존 구독을 다시 초기화해야 한다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.

  • 1 는 게시 변경 내용이 기존 구독을 다시 초기화하고 구독 다시 초기화가 발생할 수 있는 권한을 부여한다는 의미입니다.

변경될 때 모든 기존 구독을 다시 초기화해야 하는 속성은 설명 섹션을 참조하세요.

반환 코드 값

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

설명

sp_changemergepublication 는 병합 복제에 사용됩니다.

다음 속성을 변경하려면 새 스냅샷이 생성되어야 합니다. @force_invalidate_snapshot 매개 변수의 1 값을 지정해야 합니다.

  • alt_snapshot_folder
  • compress_snapshot
  • dynamic_filters
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • publication_compatibility_level (에 80SP3 만 해당)
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode
  • use_partition_groups

다음 속성을 변경하려면 기존 구독을 다시 초기화해야 합니다. @force_reinit_subscription 매개 변수의 1 값을 지정해야 합니다.

  • dynamic_filters
  • validate_subscriber_info

게시 개체를 사용하여 publish_to_active_directoryActive Directory에 나열하려면 ACTIVE Directory에서 SQL Server 개체를 이미 만들어야 합니다.

예제

DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge'; 

-- Disable DDL replication for the publication.
USE [AdventureWorks2022]
EXEC sp_changemergepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0,
  @force_invalidate_snapshot = 0, 
  @force_reinit_subscription = 0;
GO

사용 권한

sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버만 실행할 sp_changemergepublication수 있습니다.