sp_changepublication(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance
게시의 속성을 변경합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
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_snapshot_folder | 스냅샷에 대한 대체 폴더의 위치입니다. | |
centralized_conflicts | true | 충돌 레코드는 게시자에 저장됩니다. 활성 구독이 없는 경우에만 변경할 수 있습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다. |
false | 충돌 기록을 충돌을 일으킨 게시자 및 구독자에 모두 저장합니다. 활성 구독이 없는 경우에만 변경할 수 있습니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다. | |
compress_snapshot | 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 연속이어야 합니다. - 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 사실이어야 합니다. immediate_sync 대한 자세한 내용은 아래의 발언을 참조하세요. |
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 메시지 큐 사용에 대한 지원이 중단되었습니다. 값에 대해 msmq 값을 지정하면 오류가 발생합니다. |
redirected_publisher | 가용성 그룹 수신기의 이름입니다. 피어가 가용성 그룹에 있을 때 피어 투 피어 복제에 사용됩니다. SQL Server가 아닌 게시의 경우 이 속성을 변경할 수 없습니다. SQL Server 2019(15.x) CU 13에 도입되었습니다. 자세한 내용은 가용성 그룹의 일부로 한 피어 구성 또는 가용성 그룹에서 두 피어 구성을 참조하세요. | |
repl_freq | 연속 | 모든 로그 기반의 트랜잭션에 대한 출력을 게시합니다. |
스냅 사진 | 예약된 동기화 이벤트만 게시합니다. | |
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 문은 구독자에 복제해서는 안 됩니다. | |
보존 | 구독 활동의 보존 기간(시간)을 나타내는 int 입니다. 구독이 보존 기간 내에 활성화되지 않으면 제거됩니다. | |
snapshot_in_defaultfolder | true | 스냅샷 파일은 기본 스냅샷 폴더에 저장됩니다. alt_snapshot_folder지정한 경우 스냅샷 파일은 기본 위치와 대체 위치 모두에 저장됩니다. |
false | 스냅샷 파일은 alt_snapshot_folder 지정된 대체 위치에 저장됩니다. | |
status | active | 게시를 만들 때 구독자는 게시 데이터를 즉시 사용할 수 있습니다. Oracle 게시자에 대해서는 지원되지 않습니다. |
inactive | 게시를 만들 때 구독자는 게시 데이터를 사용할 수 없습니다. Oracle 게시자에 대해서는 지원되지 않습니다. | |
sync_method | native | 구독을 동기화할 때 모든 테이블의 기본 모드 대량 복사 출력을 사용합니다. |
character | 구독을 동기화할 때 모든 테이블의 문자 모드 대량 복사 출력을 사용합니다. | |
일치하는 | 모든 테이블의 기본 모드 대량 복사 프로그램 출력을 사용하지만 스냅샷 생성 프로세스 중에는 테이블을 잠그지 않습니다. 스냅샷 복제에 유효하지 않습니다. | |
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 (기본값) | 속성에 대해 지원되는 값 목록을 반환합니다. |
[ @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 = ] 'publisher'
SQL Server 이외 게시자를 지정합니다. 게시자는 sysname이며 기본값은 NULL입니다.
참고 항목
SQL Server 게시자의 아티클 속성을 변경할 때는 게시 자를 사용하면 안 됩니다.
반환 코드 값
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
publish_to_active_directory 매개 변수를 사용하여 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 실행할 수 있습니다.
참고 항목
게시 속성 보기 및 수정
게시 및 아티클 속성 변경
sp_addpublication(Transact-SQL)
sp_droppublication(Transact-SQL)
sp_helppublication(Transact-SQL)
복제 저장 프로시저(Transact-SQL)
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기