sp_changepublication(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

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

Transact-SQL 구문 표기 규칙

구문

sp_changepublication [ [ @publication = ] 'publication' ]  
    [ , [ @property = ] 'property' ]  
    [ , [ @value = ] 'value' ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  
    [ , [ @publisher = ] 'publisher' ]

인수

[ @publication = ] 'publication' 게시의 이름입니다. 게시는 sysname이며 기본값은 NULL입니다.

[ @property = ] 'property' 변경할 게시 속성입니다. 속성은 nvarchar(255)입니다.

[ @value = ] 'value' 새 속성 값입니다. nvarchar(255)이며 기본값은 NULL입니다.

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

속성 설명
allow_anonymous true 지정된 게시에 대해 익명 구독을 만들 수 있으며 immediate_sync true여야 합니다. 피어 투 피어 게시의 경우 변경할 수 없습니다.
false 지정된 게시에 대해 익명 구독을 만들 수 없습니다. 피어 투 피어 게시의 경우 변경할 수 없습니다.
allow_initialize_from_backup true 구독자는 초기 스냅샷 아닌 백업에서 이 게시에 대한 구독을 초기화할 수 있습니다. 이 속성은 Microsoft SQL Server가 아닌 게시에 대해 변경할 수 없습니다.
false 구독자는 초기 스냅샷 사용해야 합니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
allow_partition_switch true ALTER TABLE... SWITCH 문은 게시된 데이터베이스에 대해 실행할 수 있습니다. 자세한 내용은 분할된 테이블 및 인덱스 복제를 참조 하세요.
false ALTER TABLE... 게시된 데이터베이스에 대해 SWITCH 문을 실행할 수 없습니다.
allow_pull true 끌어오기 구독은 지정된 게시에 대해 허용됩니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
false 지정된 게시에 대해 끌어오기 구독을 허용하지 않습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
allow_push true 지정된 게시에 대해 밀어넣기 구독을 허용합니다.
false 지정된 게시에 대한 밀어넣기 구독은 허용되지 않습니다.
allow_subscription_copy true 이 게시를 구독하는 데이터베이스를 복사하는 기능을 사용하도록 설정합니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
false 이 게시를 구독하는 데이터베이스를 복사하는 기능을 해제합니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
alt_스냅샷_folder 스냅샷에 대한 대체 폴더의 위치입니다.
centralized_conflicts true 충돌 레코드는 게시자에 저장됩니다. 활성 구독이 없는 경우에만 변경할 수 있습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
false 충돌 기록을 충돌을 일으킨 게시자 및 구독자에 모두 저장합니다. 활성 구독이 없는 경우에만 변경할 수 있습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
compress_스냅샷 true 대체 스냅샷 폴더의 스냅샷은 .cab 파일 형식으로 압축됩니다. 기본 스냅샷 폴더의 스냅샷 압축할 수 없습니다.
false 스냅샷은 압축되지 않으며 이는 복제의 기본 동작입니다.
conflict_policy 펍이 승리 충돌 시 게시자 내용이 적용되는 구독자를 업데이트하기 위한 충돌 해결 정책입니다. 활성 구독이 없는 경우에만 이 속성을 변경할 수 있습니다. Oracle 게시자에 대해서는 지원되지 않습니다.
sub reinit 구독자를 업데이트하는 경우 충돌이 발생하면 구독을 다시 초기화해야 합니다. 활성 구독이 없는 경우에만 이 속성을 변경할 수 있습니다. Oracle 게시자에 대해서는 지원되지 않습니다.
sub wins 충돌 시 구독자 내용이 적용되는 구독자를 업데이트하기 위한 충돌 해결 정책입니다. 활성 구독이 없는 경우에만 이 속성을 변경할 수 있습니다. Oracle 게시자에 대해서는 지원되지 않습니다.
conflict_retention 충돌 보존 기간을 지정하는 int (일)입니다. 기본 보존 기간은 14일입니다. 0은 충돌 클린업이 필요하지 않음을 의미합니다. Oracle 게시자에 대해서는 지원되지 않습니다.
description 게시에 관해 설명하는 선택적인 항목입니다.
enabled_for_het_sub true 게시에서 SQL Server 이외 구독자를 지원할 수 있도록 합니다. 게시에 대한 구독이 있는 경우 enabled_for_het_sub 변경할 수 없습니다. enabled_for_het_sub true로 설정하기 전에 다음 요구 사항을 준수하도록 복제 저장 프로시저(Transact-SQL)를 실행해야 할 수 있습니다.
- allow_queued_tran false여야 합니다.
- allow_sync_tran false여야 합니다.
enabled_for_het_sub true로 변경하면 기존 게시 설정이 변경됩니다. 자세한 내용은 SQL Server 이외 구독자를 참조 하세요. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
false 게시는 SQL Server 이외 구독자를 지원하지 않습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
enabled_for_internet true 게시는 인터넷에 대해 사용하도록 설정되며 FTP(파일 전송 프로토콜)를 사용하여 스냅샷 파일을 구독자에게 전송할 수 있습니다. 게시에 대한 동기화 파일은 C:\Program Files\Microsoft SQL Server\MSSQL\Repldata\ftp 디렉터리에 저장됩니다. ftp_address NULL일 수 없습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
false 인터넷에 게시를 사용할 수 없습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
enabled_for_p2p true 게시는 피어 투 피어 복제를 지원합니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
enabled_for_p2p true설정하려면 다음 제한 사항이 적용됩니다.
- allow_anonymous false여야 합니다.
- allow_dts false여야 합니다.
- allow_initialize_from_backup true여야 합니다.
- allow_queued_tran false여야 합니다.
- allow_sync_tran false여야 합니다.
- enabled_for_het_sub false여야 합니다.
- independent_agent true여야 합니다.
- repl_freq 연속이어야 합니다.
- 복제본(replica)te_ddl 1이어야 합니다.
false 게시는 피어 투 피어 복제본(replica) 지원하지 않습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
ftp_address 게시 스냅샷 파일의 FTP 액세스 가능한 위치입니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
ftp_login FTP 서비스에 연결하는 데 사용되는 사용자 이름이며 ANONYMOUS 값은 허용됩니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
ftp_password FTP 서비스에 연결하는 데 사용한 사용자 이름에 대한 암호입니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
ftp_port 배포자에 대한 FTP 서비스의 포트 번호입니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
ftp_subdirectory 게시에서 FTP를 사용하여 스냅샷 전파를 지원하는 경우 스냅샷 파일이 만들어지는 위치를 지정합니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
immediate_sync true 게시에 대한 동기화 파일은 스냅샷 에이전트 실행할 때마다 생성되거나 다시 만들어집니다. 구독 전에 스냅샷 에이전트 한 번 완료된 경우 구독자는 구독 직후에 동기화 파일을 받을 수 있습니다. 새 구독은 스냅샷 에이전트를 가장 최근에 실행하여 생성된 최신 동기화 파일을 가져옵니다. independent_agent 사실이어야 합니다. immediate_sync 대한 자세한 내용은 아래의 발언을 참조하세요.
false 새 구독이 있는 경우에만 동기화 파일이 만들어집니다. 구독자는 스냅샷 에이전트 시작되고 완료될 때까지 구독 후에 동기화 파일을 받을 수 없습니다.
independent_agent true 게시에는 고유한 전용 배포 에이전트 있습니다.
false 게시는 공유 배포 에이전트를 사용하며 게시/구독 데이터베이스 쌍마다 공유 에이전트가 있습니다.
p2p_continue_onconflict true 충돌이 감지되면 배포 에이전트에서 변경 내용을 계속 처리합니다.
주의: 의 기본값 FALSE을 사용하는 것이 좋습니다. 이 옵션을 설정TRUE하면 배포 에이전트 가장 높은 생성자 ID를 사용하는 노드에서 충돌하는 행을 적용하여 토폴로지의 데이터를 수렴하려고 합니다. 이 메서드는 수렴을 보장하지 않습니다. 충돌이 감지된 후 토폴로지의 일관성을 확인해야 합니다. 자세한 내용은 피어 투 피어 복제의 충돌 검색에서 "충돌 처리"를 참조하세요.
false 충돌이 감지되면 배포 에이전트에서 변경 내용 처리를 중지합니다.
post_스냅샷_script 초기 동기화 중에 다른 모든 복제본(replica)ted 개체 스크립트 및 데이터가 적용된 후 배포 에이전트 실행되는 Transact-SQL 스크립트 파일의 위치를 지정합니다.
pre_snapshot_script 초기 동기화 중에 다른 모든 복제본(replica)ted 개체 스크립트 및 데이터가 적용되기 전에 배포 에이전트 실행되는 Transact-SQL 스크립트 파일의 위치를 지정합니다.
publish_to_ActiveDirectory true 이 매개 변수는 더 이상 사용되지 않으며 이전 버전 스크립트와의 호환성을 위해서만 지원됩니다. Microsoft Active Directory에 게시 정보를 더 이상 추가할 수 없습니다.
false Active Directory에서 게시 정보를 제거합니다.
queue_type sql SQL Server를 사용하여 트랜잭션을 저장합니다. 활성 구독이 없는 경우에만 이 속성을 변경할 수 있습니다.

참고: Microsoft 메시지 큐 사용에 대한 지원이 중단되었습니다. 값에 대해 msmq 값을 지정하면 오류가 발생합니다.
redirected_publisher 가용성 그룹 수신기의 이름입니다. 피어가 가용성 그룹에 있는 경우 피어 투 피어 복제본(replica)tion에 사용됩니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다. SQL Server 2019(15.x) CU 13에 도입되었습니다. 자세한 내용은 가용성 그룹의 일부로 한 피어 구성 또는 가용성 그룹에서 두 피어 구성을 참조하세요.
repl_freq 연속 모든 로그 기반의 트랜잭션에 대한 출력을 게시합니다.
snapshot (스냅샷) 예약된 동기화 이벤트만 게시합니다.
복제본(replica)te_ddl 1 게시자에서 실행되는 DDL(데이터 정의 언어) 문은 복제본(replica)ted입니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
0 DDL 문은 복제본(replica) 없습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다. 피어 투 피어 복제본(replica) 사용하는 경우 스키마 변경 내용의 복제를 사용하지 않도록 설정할 수 없습니다.
복제본(replica)te_partition_switch true ALTER TABLE... 게시된 데이터베이스에 대해 실행되는 SWITCH 문은 구독자에 복제본(replica). 이 옵션은 allow_partition_switch TRUE로 설정된 경우에만 유효합니다. 자세한 내용은 분할된 테이블 및 인덱스 복제를 참조 하세요.
false ALTER TABLE... SWITCH 문은 구독자에 복제본(replica) 안 됩니다.
보존 구독 활동의 보존 기간(시간)을 나타내는 int 입니다. 구독이 보존 기간 내에 활성화되지 않으면 제거됩니다.
스냅샷_in_defaultfolder true 스냅샷 파일은 기본 스냅샷 폴더에 저장됩니다. alt_스냅샷_folder지정한 경우 스냅샷 파일이 기본 위치와 대체 위치에 모두 저장됩니다.
false 스냅샷 파일은 alt_스냅샷_folder 지정된 대체 위치에 저장됩니다.
status active 게시를 만들 때 구독자는 게시 데이터를 즉시 사용할 수 있습니다. Oracle 게시자에 대해서는 지원되지 않습니다.
inactive 게시를 만들 때 구독자는 게시 데이터를 사용할 수 없습니다. Oracle 게시자에 대해서는 지원되지 않습니다.
sync_method native 구독을 동기화할 때 모든 테이블의 기본 모드 대량 복사 출력을 사용합니다.
character 구독을 동기화할 때 모든 테이블의 문자 모드 대량 복사 출력을 사용합니다.
동시 모든 테이블의 기본 모드 대량 복사 프로그램 출력을 사용하지만 스냅샷 생성 프로세스 중에는 테이블을 잠그지 않습니다. 스냅샷 복제본(replica) 사용할 수 없습니다.
concurrent_c 모든 테이블의 문자 모드 대량 복사 프로그램 출력을 사용하지만 스냅샷을 생성하는 동안에는 테이블을 잠그지 않습니다. 스냅샷 복제본(replica) 사용할 수 없습니다.
Taskid 이 속성은 더 이상 사용되지 않으며 더 이상 지원되지 않습니다.
allow_drop true DROP TABLE 트랜잭션 복제본(replica) 일부인 아티클에 대해 DLL 지원을 사용하도록 설정합니다. 지원되는 최소 버전: SQL Server 2014(12.x) 서비스 팩 2 이상 및 SQL Server 2016(13.x) 서비스 팩 1 이상. 추가 참조: KB 3170123
false DROP TABLE 트랜잭션 복제본(replica) 일부인 아티클에 대한 DLL 지원을 사용하지 않도록 설정합니다. 이 속성의 기본값 입니다.
NULL (기본값) 속성에 대해 지원되는 값 목록을 반환합니다.

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

  • 0은 아티클을 변경해도 스냅샷 유효하지 않도록 지정합니다. 저장 프로시저에서 변경에 새 스냅샷 필요하다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.
  • 1은 아티클을 변경하면 스냅샷 유효하지 않을 수 있음을 지정합니다. 새 스냅샷 필요한 기존 구독이 있는 경우 이 값은 기존 스냅샷 사용되지 않는 것으로 표시되고 생성되는 새 스냅샷 대한 권한을 부여합니다.
    변경될 때 새 스냅샷 생성해야 하는 속성은 설명 섹션을 참조하세요.

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

  • 0 은 아티클을 변경해도 구독이 다시 초기화되지 않도록 지정합니다. 저장 프로시저가 변경 시 기존 구독을 다시 초기화해야 한다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.
  • 1 은 아티클을 변경하여 기존 구독을 다시 초기화하도록 지정하고 구독 다시 초기화에 대한 권한을 부여합니다.

[ @publisher = ] 'publisher' SQL Server 이외 게시자를 지정합니다. 게시자는 sysname이며 기본값은 NULL입니다.

참고 항목

SQL Server 게시자의 아티클 속성을 변경할 때는 게시 자를 사용하면 안 됩니다.

반환 코드 값

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

설명

sp_changepublication 스냅샷 복제본(replica) 및 트랜잭션 복제본(replica) 사용됩니다.

다음 속성을 변경한 후 새 스냅샷 생성해야 하며 force_invalidate_스냅샷 매개 변수에 대해 1 값을 지정해야 합니다.

  • alt_스냅샷_folder
  • compress_스냅샷
  • enabled_for_het_sub
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_스냅샷_script
  • pre_snapshot_script
  • 스냅샷_in_defaultfolder
  • sync_mode

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

즉시 동기화의 영향

즉시 동기화가 켜지면 구독이 없더라도 초기 스냅샷 생성된 직후 로그의 모든 변경 내용이 추적됩니다. 기록된 변경 내용은 고객이 백업을 사용하여 새 피어 노드를 추가할 때 사용됩니다. 백업이 복원된 후 피어는 백업을 수행한 후 발생하는 다른 변경 내용과 동기화됩니다. 명령은 배포 데이터베이스에서 추적되므로 동기화 논리는 백업이 최대 보존 기간 내에 수행된 경우 명령을 사용할 수 있다는 것을 알고 마지막으로 백업된 LSN을 확인하고 이를 시작점으로 사용할 수 있습니다. (최소 보존 기간의 기본값은 0시간이고 최대 보존 기간은 24시간입니다.)

즉시 동기화가 해제되면 변경 내용이 최소 보존 기간 이상으로 유지되고 이미 복제본(replica) 모든 트랜잭션에 대해 즉시 클린. 즉시 동기화가 해제되고 기본 보존 기간으로 구성된 경우 백업 수행 후 필요한 변경 내용이 정리되어 새 피어 노드가 제대로 초기화되지 않을 수 있습니다. 남은 유일한 옵션은 토폴로지 정지입니다. 즉시 동기화를 켜기로 설정하면 유연성이 향상되며 P2P 복제본(replica)tion에 권장되는 설정입니다.

예시

DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran' 

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2022]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

사용 권한

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

참고 항목

게시 속성 보기 및 수정
게시 및 아티클 속성 변경
sp_addpublication(Transact-SQL)
sp_droppublication(Transact-SQL)
sp_helppublication(Transact-SQL)
복제 저장 프로시저(Transact-SQL)