다음을 통해 공유


sp_changepublication(Transact-SQL)

적용 대상: SQL Server Azure SQL Managed Instance

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

Transact-SQL 구문 표기 규칙

구문

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

인수

[ @publication = ] N'publication'

게시의 이름 @publication sysname이며 기본값은 .입니다NULL.

[ @property = ] N'property'

변경할 게시 속성입니다. @property 기본값NULL인 nvarchar(255)입니다.

[ @value = ] N'value'

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

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

속성 설명
allow_anonymous true 지정된 게시에 대해 익명 구독을 만들 수 있으며 immediate_sync , 또한 .이어야 true합니다. 피어 투 피어 게시의 경우 변경할 수 없습니다.
false 지정된 게시에 대해 익명 구독을 만들 수 없습니다. 피어 투 피어 게시의 경우 변경할 수 없습니다.
allow_initialize_from_backup true 구독자는 초기 스냅샷이 아닌 백업에서 이 게시에 대한 구독을 초기화할 수 있습니다. 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_snapshot_folder 스냅샷에 대한 대체 폴더의 위치입니다.
centralized_conflicts true 충돌 레코드는 게시자에 저장됩니다. 활성 구독이 없는 경우에만 변경할 수 있습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
false 충돌 기록을 충돌을 일으킨 게시자 및 구독자에 모두 저장합니다. 활성 구독이 없는 경우에만 변경할 수 있습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다.
compress_snapshot true 대체 스냅샷 폴더의 스냅샷은 .cab 파일 형식으로 압축됩니다. 기본 스냅샷 폴더의 스냅샷은 압축할 수 없습니다.
false 스냅샷은 압축되지 않습니다. 이는 복제의 기본 동작입니다.
conflict_policy pub wins 충돌 시 게시자 내용이 적용되는 구독자를 업데이트하기 위한 충돌 해결 정책입니다. 활성 구독이 없는 경우에만 이 속성을 변경할 수 있습니다. 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 게시에 대한 구독이 있는 경우 변경할 수 없습니다. true로 설정 enabled_for_het_sub 하기 전에 다음 요구 사항을 준수하기 위해 sp_changepublication 실행해야 할 수 있습니다.
- allow_queued_tran 해야 false합니다.
- allow_sync_tran 해야 false합니다.
기존 게시 설정을 변경할 수 있도록 true 변경 enabled_for_het_sub 합니다. 자세한 내용은 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_anonymousfalse
- allow_dts 해야 false합니다.
- allow_initialize_from_backuptrue
- allow_queued_tran 해야 false합니다.
- allow_sync_tran 해야 false합니다.
- enabled_for_het_sub 해야 false합니다.
- independent_agent 해야 true합니다.
- repl_freq 해야 continuous합니다.
- replicate_ddl 해야 1합니다.
false 게시는 피어 투 피어 복제를 지원하지 않습니다. 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 은 이어야 true합니다. 자세한 내용은 즉시 동기화의 효과를 참조하세요.
false 새 구독이 있는 경우에만 동기화 파일이 만들어집니다. 구독자는 스냅샷 에이전트 시작되고 완료될 때까지 구독 후에 동기화 파일을 받을 수 없습니다.
independent_agent true 게시에는 고유한 전용 배포 에이전트 있습니다.
false 게시는 공유 배포 에이전트를 사용하며 게시/구독 데이터베이스 쌍마다 공유 에이전트가 있습니다.
p2p_continue_onconflict true 충돌이 감지되면 배포 에이전트에서 변경 내용을 계속 처리합니다.

주의: 의 기본값 FALSE을 사용하는 것이 좋습니다. 이 옵션을 설정TRUE하면 배포 에이전트 가장 높은 생성자 ID인 노드에서 충돌하는 행을 적용하여 토폴로지의 데이터를 수렴하려고 합니다. 이 메서드는 수렴을 보장하지 않습니다. 충돌이 감지된 후 토폴로지의 일관성을 확인해야 합니다. 자세한 내용은 피어 투 피어 - 피어 간 복제에서 충돌 검색의 "충돌 처리"를 참조하세요.
false 충돌이 감지되면 배포 에이전트에서 변경 내용 처리를 중지합니다.
post_snapshot_script 초기 동기화 중에 복제된 다른 모든 개체 스크립트와 데이터가 적용된 후 배포 에이전트 실행되는 Transact-SQL 스크립트 파일의 위치를 지정합니다.
pre_snapshot_script 초기 동기화 중에 복제된 다른 모든 개체 스크립트와 데이터가 적용되기 전에 배포 에이전트 실행되는 Transact-SQL 스크립트 파일의 위치를 지정합니다.
publish_to_ActiveDirectory true 이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성에 대해서만 지원됩니다. Microsoft Active Directory에 게시 정보를 더 이상 추가할 수 없습니다.
false Active Directory에서 게시 정보를 제거합니다.
queue_type sql SQL Server를 사용하여 트랜잭션을 저장합니다. 활성 구독이 없는 경우에만 이 속성을 변경할 수 있습니다.

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

[ @publisher = ] N'publisher'

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

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

반환 코드 값

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

설명

sp_changepublication 는 스냅샷 복제 및 트랜잭션 복제에 사용됩니다.

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

  • alt_snapshot_folder
  • compress_snapshot
  • enabled_for_het_sub
  • ftp_address
  • ftp_login
  • ftp_password
  • ftp_port
  • ftp_subdirectory
  • post_snapshot_script
  • pre_snapshot_script
  • snapshot_in_defaultfolder
  • sync_mode

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

즉시 동기화의 효과

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

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

예제

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수 있습니다.