sp_addpublication(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance
스냅샷 또는 트랜잭션 게시를 만듭니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
sp_addpublication
[ @publication = ] N'publication'
[ , [ @taskid = ] taskid ]
[ , [ @restricted = ] N'restricted' ]
[ , [ @sync_method = ] N'sync_method' ]
[ , [ @repl_freq = ] N'repl_freq' ]
[ , [ @description = ] N'description' ]
[ , [ @status = ] N'status' ]
[ , [ @independent_agent = ] N'independent_agent' ]
[ , [ @immediate_sync = ] N'immediate_sync' ]
[ , [ @enabled_for_internet = ] N'enabled_for_internet' ]
[ , [ @allow_push = ] N'allow_push' ]
[ , [ @allow_pull = ] N'allow_pull' ]
[ , [ @allow_anonymous = ] N'allow_anonymous' ]
[ , [ @allow_sync_tran = ] N'allow_sync_tran' ]
[ , [ @autogen_sync_procs = ] N'autogen_sync_procs' ]
[ , [ @retention = ] retention ]
[ , [ @allow_queued_tran = ] N'allow_queued_tran' ]
[ , [ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder' ]
[ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
[ , [ @pre_snapshot_script = ] N'pre_snapshot_script' ]
[ , [ @post_snapshot_script = ] N'post_snapshot_script' ]
[ , [ @compress_snapshot = ] N'compress_snapshot' ]
[ , [ @ftp_address = ] N'ftp_address' ]
[ , [ @ftp_port = ] ftp_port ]
[ , [ @ftp_subdirectory = ] N'ftp_subdirectory' ]
[ , [ @ftp_login = ] N'ftp_login' ]
[ , [ @ftp_password = ] N'ftp_password' ]
[ , [ @allow_dts = ] N'allow_dts' ]
[ , [ @allow_subscription_copy = ] N'allow_subscription_copy' ]
[ , [ @conflict_policy = ] N'conflict_policy' ]
[ , [ @centralized_conflicts = ] N'centralized_conflicts' ]
[ , [ @conflict_retention = ] conflict_retention ]
[ , [ @queue_type = ] N'queue_type' ]
[ , [ @add_to_active_directory = ] N'add_to_active_directory' ]
[ , [ @logreader_job_name = ] N'logreader_job_name' ]
[ , [ @qreader_job_name = ] N'qreader_job_name' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @allow_initialize_from_backup = ] N'allow_initialize_from_backup' ]
[ , [ @replicate_ddl = ] replicate_ddl ]
[ , [ @enabled_for_p2p = ] N'enabled_for_p2p' ]
[ , [ @publish_local_changes_only = ] N'publish_local_changes_only' ]
[ , [ @enabled_for_het_sub = ] N'enabled_for_het_sub' ]
[ , [ @p2p_conflictdetection = ] N'p2p_conflictdetection' ]
[ , [ @p2p_originator_id = ] p2p_originator_id ]
[ , [ @p2p_continue_onconflict = ] N'p2p_continue_onconflict' ]
[ , [ @allow_partition_switch = ] N'allow_partition_switch' ]
[ , [ @replicate_partition_switch = ] N'replicate_partition_switch' ]
[ , [ @allow_drop = ] N'allow_drop' ]
[ , [ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy' ]
[ ; ]
인수
[ @publication = ] N'publication'
만들 게시의 이름입니다. @publication 기본값이 없는 sysname입니다. 이름은 반드시 데이터베이스 내에서 고유해야 합니다.
[ @taskid = ] taskid
이전 버전과의 호환성에 대해서만 지원됨; sp_addpublication_snapshot 사용합니다.
[ @restricted = ] N'restricted'
이전 버전과의 호환성에 대해서만 지원됨; 를 사용합니다 default_access
.
[ @sync_method = ] N'sync_method'
동기화 모드입니다. @sync_method nvarchar(40)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
native 1 |
모든 테이블의 기본 모드 대량 복사 프로그램 출력을 생성합니다. |
character |
모든 테이블의 문자 모드 대량 복사 프로그램 출력을 생성합니다. 참고: Oracle 게시자의 character 경우 스냅샷 복제에만 유효합니다. |
concurrent 1 |
모든 테이블의 기본 모드 대량 복사 프로그램 출력을 생성하지만 스냅샷 중에는 테이블을 잠그지 않습니다. 트랜잭션 게시에 대해서만 지원됩니다. |
concurrent_c |
모든 테이블의 문자 모드 대량 복사 프로그램 출력을 생성하지만 스냅샷 중에는 테이블을 잠그지 않습니다. 트랜잭션 게시에 대해서만 지원됩니다. |
database snapshot |
데이터베이스 스냅샷에서 모든 테이블의 기본 모드 대량 복사 프로그램 출력을 생성합니다. 데이터베이스 스냅샷은 SQL Server의 모든 버전에서 사용할 수 없습니다. SQL Server 버전에서 지원되는 기능 목록은 SQL Server 2022의 버전과 지원하는 기능을 참조하세요. |
database snapshot character |
데이터베이스 스냅샷에서 모든 테이블의 문자 모드 대량 복사 프로그램 출력을 생성합니다. 데이터베이스 스냅샷은 SQL Server의 모든 버전에서 사용할 수 없습니다. SQL Server 버전에서 지원되는 기능 목록은 SQL Server 2022의 버전과 지원하는 기능을 참조하세요. |
NULL (기본값) |
SQL Server 게시자의 native 기본값입니다. SQL Server 이외 게시자의 경우 기본적으로 character @repl_freq 값이 Snapshot 있는 경우와 다른 모든 경우에 대해 concurrent_c. |
1 Oracle 게시자에 대해서는 지원되지 않습니다.
[ @repl_freq = ] N'repl_freq'
@repl_freq 복제 빈도 의 형식은 nvarchar(10)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
continuous (기본값) |
로그 판독기 에이전트는 지속적으로 실행됩니다. SQL Server가 아닌 게시자의 경우 이 경우 @sync_method 설정해야 합니다 concurrent_c . |
snapshot |
로그 판독기 에이전트는 일정에 따라 실행됩니다. SQL Server가 아닌 게시자의 경우 이 경우 @sync_method 설정해야 합니다 character . |
[ @description = ] N'description'
게시에 대한 선택적 설명입니다. @description 기본값NULL
인 nvarchar(255)입니다.
[ @status = ] N'status'
게시 데이터를 사용할 수 있는지를 지정합니다. @status nvarchar(8)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
active |
게시 데이터는 구독자에 즉시 사용할 수 있습니다. |
inactive (기본값) |
게시를 처음 만들 때 구독자는 게시 데이터를 사용할 수 없습니다(구독할 수 있지만 구독은 처리되지 않음). |
Oracle 게시자에 대해서는 지원되지 않습니다.
[ @independent_agent = ] N'independent_agent'
이 게시에 대한 독립 실행형 배포 에이전트 있는지를 지정합니다. @independent_agent 기본값false
인 nvarchar(5)입니다.
- 이 경우
true
이 게시에 대한 독립 실행형 배포 에이전트 있습니다. - 게시에서 공유 배포 에이전트 사용하고 각 게시자 데이터베이스/구독자 데이터베이스 쌍에 하나의 공유 에이전트가 있는 경우
false
[ @immediate_sync = ] N'immediate_sync'
스냅샷 에이전트 실행할 때마다 게시에 대한 동기화 파일이 만들어지는지 지정합니다. @immediate_sync 기본값false
인 nvarchar(5)입니다.
이 경우 true
동기화 파일이 만들어지거나 스냅샷 에이전트 실행할 때마다 다시 만들어집니다. 구독을 만들기 전에 스냅샷 에이전트 완료된 경우 구독자는 즉시 동기화 파일을 가져올 수 있습니다. 새 구독은 스냅샷 에이전트를 가장 최근에 실행하여 생성된 최신 동기화 파일을 가져옵니다. true
@independent_agent @immediate_sync .true
이 경우 false
동기화 파일은 새 구독이 있는 경우에만 만들어집니다. 기존 게시에 새 아티클을 증분 방식으로 추가할 때 각 구독에 대해 sp_addsubscription 호출해야 합니다. 구독자는 스냅샷 에이전트 시작 및 완료될 때까지 구독 후에 동기화 파일을 받을 수 없습니다.
[ @enabled_for_internet = ] N'enabled_for_internet'
게시에 인터넷을 사용할 수 있는지 여부를 나타내며 구독자에 스냅샷 파일을 전송할 때 FTP(파일 전송 프로토콜)를 사용할 수 있는지 여부를 결정합니다. @enabled_for_internet 기본값false
인 nvarchar(5)입니다. 이 경우 true
게시의 동기화 파일이 디렉터리에 배치 C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp
됩니다. 사용자가 디렉터리를 만들어야 Ftp
합니다.
[ @allow_push = ] N'allow_push'
지정된 게시에 대한 밀어넣기 구독을 만들 수 있는지를 지정합니다. @allow_push 게시에 대한 밀어넣기 구독을 허용하는 기본값true
인 nvarchar(5)입니다.
[ @allow_pull = ] N'allow_pull'
지정된 게시에 대해 끌어오기 구독을 만들 수 있는지 여부를 지정합니다. @allow_pull 기본값false
인 nvarchar(5)입니다. 이 경우 false
게시에서 끌어오기 구독이 허용되지 않습니다.
[ @allow_anonymous = ] N'allow_anonymous'
지정된 게시에 대해 익명 구독을 만들 수 있는지 여부를 지정합니다. @allow_anonymous 기본값false
인 nvarchar(5)입니다. 경우 true
@immediate_sync .로 설정true
해야 합니다. 이 경우 false
게시에서 익명 구독이 허용되지 않습니다.
[ @allow_sync_tran = ] N'allow_sync_tran'
게시에서 즉시 업데이트 구독이 허용되는지 지정합니다. @allow_sync_tran 기본값false
인 nvarchar(5)입니다. true
는 Oracle 게시자에 대해 지원되지 않습니다.
[ @autogen_sync_procs = ] N'autogen_sync_procs'
게시자에서 구독을 업데이트하기 위한 동기화 저장 프로시저가 생성되는지를 지정합니다. @autogen_sync_procs nvarchar(5)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
true |
구독을 업데이트할 때 자동으로 설정합니다. |
false |
구독을 업데이트할 수 없거나 Oracle 게시자에 대해 자동으로 설정합니다. |
NULL (기본값) |
구독을 업데이트할 true 때와 구독을 업데이트할 false 수 없는 경우의 기본값입니다. |
참고 항목
사용자가 제공한 @autogen_sync_procs 값은 @allow_queued_tran및 @allow_sync_tran 지정된 값에 따라 재정의됩니다.
[ @retention = ] 보존
구독 활동의 보존 기간(시간)입니다. @retention 기본값336
인 int입니다. 구독이 보존 기간 내에 활성화되지 않으면 만료되고 제거됩니다. 해당 값은 게시자가 사용하는 배포 데이터베이스의 최대 보존 기간보다 길 수 있습니다. 이 경우 0
게시에 대한 잘 알려진 구독이 만료되지 않으며 만료된 구독 정리 에이전트에 의해 제거됩니다.
[ @allow_queued_tran = ] N'allow_queued_tran'
게시자에서 적용할 수 있을 때까지 구독자에서 변경 내용의 큐를 사용하거나 사용하지 않도록 설정합니다. @allow_queued_tran 기본값false
인 nvarchar(5)입니다.
- 이 경우
false
구독자의 변경 내용이 큐에 대기되지 않습니다. true
는 Oracle 게시자에 대해 지원되지 않습니다.
[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'
스냅샷 파일이 기본 폴더에 저장되는지를 지정합니다. @snapshot_in_defaultfolder 기본값true
인 nvarchar(5)입니다.
- 이 경우
true
기본 폴더에서 스냅샷 파일을 찾을 수 있습니다. - 스냅샷 파일이 @alt_snapshot_folder 지정된 대체 위치에 저장된 경우
false
대체 위치는 다른 서버, 네트워크 드라이브 또는 이동식 미디어(예: 이동식 디스크)에 있을 수 있습니다. 구독자가 나중에 검색할 수 있도록 스냅샷 파일을 FTP 사이트에 저장할 수도 있습니다. 이 매개 변수는 true일 수 있으며 여전히 @alt_snapshot_folder 매개 변수에 위치가 있습니다. 이 조합은 스냅샷 파일이 기본 위치와 대체 위치 모두에 저장되도록 지정합니다.
[ @alt_snapshot_folder = ] N'alt_snapshot_folder'
스냅샷에 대한 대체 폴더의 위치를 지정합니다. @alt_snapshot_folder 기본값NULL
인 nvarchar(255)입니다.
[ @pre_snapshot_script = ] N'pre_snapshot_script'
.sql 파일 위치에 대한 포인터를 지정합니다. @pre_snapshot_script 기본값NULL
인 nvarchar(255)입니다. 배포 에이전트 구독자에서 스냅샷을 적용할 때 복제된 개체 스크립트를 실행하기 전에 사전 스냅샷 스크립트를 실행합니다. 구독 데이터베이스에 연결할 때 배포 에이전트에서 사용되는 보안 컨텍스트에서 스크립트가 실행됩니다.
[ @post_snapshot_script = ] N'post_snapshot_script'
파일 위치에 대한 포인터를 .sql
지정합니다. @post_snapshot_script 기본값NULL
인 nvarchar(255)입니다. 배포 에이전트는 초기 동기화 중 복제된 다른 모든 개체 스크립트 및 데이터가 적용된 후 포스트 스냅샷 스크립트를 실행합니다. 구독 데이터베이스에 연결할 때 배포 에이전트에서 사용되는 보안 컨텍스트에서 스크립트가 실행됩니다.
[ @compress_snapshot = ] N'compress_snapshot'
@alt_snapshot_folder 위치에 기록되는 스냅샷을 Microsoft CAB 형식으로 압축하도록 지정합니다. @compress_snapshot 기본값false
인 nvarchar(5)입니다.
false
는 스냅샷이 압축되지 않도록 지정합니다.true
는 스냅샷이 압축되도록 지정합니다.
2GB(기가바이트)보다 큰 스냅샷 파일은 압축할 수 없습니다. 압축된 스냅샷 파일은 배포 에이전트 실행되는 위치에서 압축되지 않습니다. 끌어오기 구독은 일반적으로 압축된 스냅샷과 함께 사용되므로 파일이 구독자에서 압축되지 않습니다. 기본 폴더의 스냅샷은 압축할 수 없습니다.
[ @ftp_address = ] N'ftp_address'
배포자에 대한 FTP 서비스의 네트워크 주소입니다. @ftp_address sysname이며 기본값은 .입니다NULL
. 구독자의 배포 에이전트 또는 병합 에이전트 게시 스냅샷 파일이 있는 위치를 지정합니다. 이 속성은 각 게시에 대해 저장되므로 각 게시에 다른 @ftp_address 있을 수 있습니다. 게시는 FTP를 사용하여 스냅샷 전파를 지원해야 합니다.
[ @ftp_port = ] ftp_port
배포자에 대한 FTP 서비스의 포트 번호입니다. @ftp_port 기본값21
인 int입니다. 선택할 구독자의 배포 에이전트 또는 병합 에이전트에 대한 게시 스냅샷 파일의 위치를 지정합니다. 이 속성은 각 게시에 대해 저장되므로 각 게시에는 고유한 @ftp_port 있을 수 있습니다.
[ @ftp_subdirectory = ] N'ftp_subdirectory'
게시가 FTP를 사용하여 스냅샷 전파를 지원하는 경우 구독자의 배포 에이전트 또는 병합 에이전트 스냅샷 파일을 선택할 수 있는 위치를 지정합니다. @ftp_subdirectory 기본값NULL
인 nvarchar(255)입니다. 이 속성은 각 게시에 대해 저장되므로 각 게시에는 고유한 @ftp_subdirctory 있거나 값으로 NULL
표시된 하위 디렉터리가 없도록 선택할 수 있습니다.
[ @ftp_login = ] N'ftp_login'
FTP 서비스에 연결하는 데 사용되는 사용자 이름입니다. @ftp_login sysname이며 기본값은 .입니다anonymous
.
[ @ftp_password = ] N'ftp_password'
FTP 서비스에 연결하는 데 필요한 사용자 암호입니다. @ftp_password sysname이며 기본값은 .입니다NULL
.
[ @allow_dts = ] N'allow_dts'
게시에서 데이터 변환을 허용하도록 지정합니다. 구독을 만들 때 DTS 패키지를 지정할 수 있습니다. @allow_dts dTS 변환을 허용하지 않는 기본값false
인 nvarchar(5)입니다. @allow_dts true이면 @sync_method 중 하나 character
또는 concurrent_c
.로 설정해야 합니다.
true
는 Oracle 게시자에 대해 지원되지 않습니다.
[ @allow_subscription_copy = ] N'allow_subscription_copy'
이 게시를 구독하는 구독 데이터베이스를 복사하는 기능을 설정 또는 해제합니다. @allow_subscription_copy 기본값false
인 nvarchar(5)입니다.
[ @conflict_policy = ] N'conflict_policy'
대기 중인 업데이트 구독자 옵션을 사용할 때 다음에 발생하는 충돌 해결 정책을 지정합니다. @conflict_policy nvarchar(100)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
pub wins |
게시자가 충돌에서 승리합니다. |
sub reinit |
구독을 다시 초기화합니다. |
sub wins |
구독자가 충돌에서 승리합니다. |
NULL (기본값) |
게시가 스냅샷 게시이면 NULL 기본 정책이 됩니다 sub reinit . NULL 게시가 스냅샷 게시가 아니면 기본값이 됩니다pub wins . |
Oracle 게시자에 대해서는 지원되지 않습니다.
[ @centralized_conflicts = ] N'centralized_conflicts'
충돌 레코드가 게시자에 저장되는지를 지정합니다. @centralized_conflicts 기본값NULL
인 nvarchar(5)입니다.
- 이 경우
true
충돌 레코드가 게시자에 저장됩니다. - 충돌 레코드가 게시자와 충돌의 원인이 된 구독자 모두에 저장되는 경우
false
Oracle 게시자에 대해서는 지원되지 않습니다.
[ @conflict_retention = ] conflict_retention
충돌 보존 기간을 일 단위로 지정합니다. 피어 투 피어 트랜잭션 복제 및 지연 업데이트 구독에 대해 충돌 메타데이터가 저장되는 기간입니다. @conflict_retention 기본값14
인 int입니다.
Oracle 게시자에 대해서는 지원되지 않습니다.
[ @queue_type = ] N'queue_type'
사용되는 큐 유형을 지정합니다. @queue_type nvarchar(10)이며 이러한 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
sql |
SQL Server를 사용하여 트랜잭션을 저장합니다. |
NULL (기본값) |
기본적으로 SQL Server를 sql 사용하여 트랜잭션을 저장하도록 지정합니다. |
참고 항목
Microsoft 메시지 큐 사용에 대한 지원은 중단됩니다. 값을 msmq
지정하면 경고가 발생하며 복제 시 값 sql
이 자동으로 설정됩니다.
Oracle 게시자에 대해서는 지원되지 않습니다.
[ @add_to_active_directory = ] N'add_to_active_directory'
이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성에 대해서만 지원됩니다. Microsoft Active Directory에 게시 정보를 더 이상 추가할 수 없습니다.
[ @logreader_job_name = ] N'logreader_job_name'
기존 에이전트 작업의 이름입니다. @logreader_job_name 기본값NULL
인 sysname입니다. 이 매개 변수는 로그 판독기 에이전트가 새 작업을 만드는 대신 기존 작업을 사용하는 경우에만 지정됩니다.
[ @qreader_job_name = ] N'qreader_job_name'
기존 에이전트 작업의 이름입니다. @qreader_job_name sysname이며 기본값은 .입니다NULL
. 이 매개 변수는 큐 판독기 에이전트가 새 작업을 만드는 대신 기존 작업을 사용하는 경우에만 지정됩니다.
[ @publisher = ] N'publisher'
SQL Server가 아닌 게시자를 지정합니다. @publisher sysname이며 기본값은 .입니다NULL
.
sql Server 게시자에 게시를 추가할 때는 @publisher 사용하면 안 됩니다.
[ @allow_initialize_from_backup = ] N'allow_initialize_from_backup'
구독자가 초기 스냅샷이 아닌 백업에서 이 게시에 대한 구독을 초기화할 수 있는지를 나타냅니다. @allow_initialize_from_backup nvarchar(5)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
true |
백업으로부터 초기화할 수 있습니다. |
false |
백업에서 초기화를 사용하지 않도록 설정합니다. |
NULL (기본값) |
true 기본적으로 피어 투 피어 복제 토폴로지의 게시 및 false 다른 모든 게시에 대해 설정됩니다. |
자세한 내용은 스냅샷 없이 트랜잭션 구독 초기화를 참조하세요.
Warning
구독자 데이터 누락을 방지하려면 사용 sp_addpublication
시 @allow_initialize_from_backup = N'true'
항상 .를 사용합니다 @immediate_sync = N'true'
.
[ @replicate_ddl = ] replicate_ddl
게시에 대해 스키마 복제가 지원되는지를 나타냅니다. @replicate_ddl 기본값은 SQL Server 게시자 및 0
SQL Server 이외 게시자에 대한 int1
입니다.
1
는 게시자에서 실행되는 DDL(데이터 정의 언어) 문이 복제됨을 나타냅니다.0
는 DDL 문이 복제되지 않음을 나타냅니다.
Oracle 게시자에는 스키마 복제가 지원되지 않습니다.
자세한 내용은 게시 데이터베이스의 스키마 변경을 참조하세요.
@replicate_ddl 매개 변수는 DDL 문이 열을 추가할 때 적용됩니다. 다음과 같은 이유로 DDL 문이 열을 변경하거나 삭제하면 @replicate_ddl 매개 변수가 무시됩니다.
열을 삭제하면 새 DML 문이 삭제된
sysarticlecolumns
열을 포함하지 않도록 업데이트해야 합니다. 이로 인해 배포 에이전트가 실패합니다. 복제는 항상 스키마 변경을 복제해야 하므로 @replicate_ddl 매개 변수는 무시됩니다.열이 변경되면 원본 데이터 형식 또는 null 허용 여부가 변경되어 DML 문에 구독자의 테이블과 호환되지 않을 수 있는 값이 포함될 수 있습니다. 이러한 DML 문으로 인해 배포 에이전트가 실패할 수 있습니다. 복제는 항상 스키마 변경을 복제해야 하므로 @replicate_ddl 매개 변수는 무시됩니다.
DDL 문이 새 열을
sysarticlecolumns
추가하는 경우 새 열을 포함하지 않습니다. DML 문은 새 열에 대한 데이터를 복제하려고 하지 않습니다. DDL을 복제하거나 복제할 수 없으므로 매개 변수가 적용됩니다.
[ @enabled_for_p2p = ] N'enabled_for_p2p'
피어 투 피어 복제 토폴로지에서 게시를 사용할 수 있도록 합니다. @enabled_for_p2p 기본값false
인 nvarchar(5)입니다. true
는 게시가 피어 투 피어 복제를 지원한다는 것을 나타냅니다. @enabled_for_p2p true
설정할 때 다음과 같은 제한 사항이 적용됩니다.
- @allow_anonymous .
false
- @allow_dts .
false
- @allow_initialize_from_backup .
true
- @allow_queued_tran .
false
- @allow_sync_tran .
false
- @conflict_policy .
false
- @independent_agent .
true
- @repl_freq .
continuous
- @replicate_ddl .
1
자세한 내용은 피어 투 피어 - 트랜잭션 복제를 참조 하세요.
[ @publish_local_changes_only = ] N'publish_local_changes_only'
정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다.
[ @enabled_for_het_sub = ] N'enabled_for_het_sub'
게시에서 SQL Server 이외 구독자를 지원할 수 있도록 합니다. @enabled_for_het_sub 기본값false
인 nvarchar(5)입니다. 값 true
은 게시가 SQL Server 이외 구독자를 지원한다는 의미입니다. @enabled_for_het_sub true
경우 다음과 같은 제한 사항이 적용됩니다.
- @allow_initialize_from_backup .
false
- @allow_push .
true
- @allow_queued_tran .
false
- @allow_subscription_copy .
false
- @allow_sync_tran .
false
- @autogen_sync_procs .
false
- @conflict_policy .
NULL
- @enabled_for_internet .
false
- @enabled_for_p2p .
false
- @ftp_address .
NULL
- @ftp_subdirectory .
NULL
- @ftp_password .
NULL
- @pre_snapshot_script .
NULL
- @post_snapshot_script .
NULL
- @replicate_ddl 0이어야 합니다.
- @qreader_job_name .
NULL
- @queue_type .
NULL
- @sync_method 될 수 없거나
native
concurrent
.
자세한 내용은 SQL Server 이외 구독자를 참조하세요.
[ @p2p_conflictdetection = ] N'p2p_conflictdetection'
게시가 피어 투 피어 복제에 사용하도록 설정된 경우 배포 에이전트 충돌을 감지할 수 있도록 합니다. @p2p_conflictdetection 기본값false
인 nvarchar(5)입니다. 자세한 내용은 피어 투 피어 복제에서 피어 투 피어 - 충돌 검색을 참조하세요.
[ @p2p_originator_id = ] p2p_originator_id
피어 투 피어 토폴로지에 있는 노드의 ID를 지정합니다. @p2p_originator_id 기본값NULL
인 int입니다. 이 ID는 @p2p_conflictdetection TRUE로 설정된 경우 충돌 검색에 사용됩니다. 토폴로지에서 사용되지 않은 양의 0이 아닌 ID를 지정합니다. 사용되는 ID 목록의 경우 sp_help_peerconflictdetection 실행합니다.
[ @p2p_continue_onconflict = ] N'p2p_continue_onconflict'
충돌이 검색된 후 배포 에이전트에서 변경 내용을 계속 처리할지 여부를 결정합니다. @p2p_continue_onconflict 기본값false
인 nvarchar(5)입니다.
주의
의 기본값 false
을 사용하는 것이 좋습니다. 이 옵션을 설정true
하면 배포 에이전트 가장 높은 생성자 ID인 노드에서 충돌하는 행을 적용하여 토폴로지의 데이터를 수렴하려고 합니다. 이 메서드는 수렴을 보장하지 않습니다. 충돌이 감지된 후 토폴로지의 일관성을 확인해야 합니다. 자세한 내용은 피어 투 피어 - 피어 간 복제에서 충돌 검색의 "충돌 처리"를 참조하세요.
[ @allow_partition_switch = ] N'allow_partition_switch'
게시된 데이터베이스에 대해 문을 실행할 수 있는지 여부를 ALTER TABLE...SWITCH
지정합니다. @allow_partition_switch 기본값false
인 nvarchar(5)입니다. 자세한 내용은 분할된 테이블 및 인덱스 복제를 참조하세요.
[ @replicate_partition_switch = ] N'replicate_partition_switch'
게시된 데이터베이스에 대해 실행되는 문을 구독자에 복제할지 여부를 ALTER TABLE...SWITCH
지정합니다. @replicate_partition_switch 기본값NULL
인 nvarchar(5)입니다. 이 옵션은 @allow_partition_switch TRUE로 설정된 경우에만 유효합니다.
[ @allow_drop = ] N'allow_drop'
정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다.
[ @p2p_conflictdetection_policy = ] N'p2p_conflictdetection_policy'
적용 대상: SQL Server 2019(15.x) CU 13 이상 버전.
@p2p_conflictdetection_policy nvarchar(12)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
originatorid (기본값) |
배포 에이전트는 충돌을 감지하고 생성자 ID(있는 경우 p2p_continue_onconflict = N'true' )를 기반으로 승자를 결정합니다. 그렇지 않으면 오류가 발생합니다. |
lastwriter |
배포 에이전트는 충돌을 감지하고 마지막 기록 p2p_continue_onconflict = N'true' 기의 날짜/시간을 기준으로 승자를 결정합니다. 그렇지 않으면 오류가 발생합니다. |
참고 항목
지정 originatorid
하면 충돌 검색은 SQL Server 2019(15.x) CU 12 이전 버전과 동일합니다. 지정할 lastwriter
때 SQL Server는 가장 최근의 쓰기에 따라 충돌이 자동으로 해결되도록 허용합니다.
반환 코드 값
0
(성공) 또는 1
(실패).
설명
sp_addpublication
는 스냅샷 복제 및 트랜잭션 복제에 사용됩니다.
동일한 데이터베이스 개체를 게시하는 여러 게시가 있는 경우 @replicate_ddl 값이 1
있는 게시만 복제ALTER TABLE
, ALTER VIEW
, ALTER PROCEDURE
ALTER FUNCTION
및 ALTER TRIGGER
DDL 문입니다. 그러나 ALTER TABLE DROP COLUMN
DDL 문은 삭제된 열을 게시하는 모든 게시에 의해 복제됩니다.
게시에 대해 DDL 복제를 사용하도록 설정(@replicate_ddl = 1
)한 경우 게시에 대한 DDL을 변경하지 않도록 하려면 먼저 @replicate_ddl 설정 0
하기 위해 sp_changepublication 실행해야 합니다. 비확급 DDL 문이 실행된 후 sp_changepublication 다시 실행하여 DDL 복제를 다시 설정할 수 있습니다.
예제
-- 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".
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks';
SET @publication = N'AdvWorksProductTran';
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login);
-- This should be passed at runtime.
SET @password = $(Password);
-- Enable transactional or snapshot 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 new transactional publication with the required properties.
EXEC sp_addpublication
@publication = @publication,
@status = N'active',
@allow_push = N'true',
@allow_pull = N'true',
@independent_agent = N'true';
-- 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
사용 권한
sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버만 실행할 sp_addpublication
수 있습니다. Windows 인증 로그인에는 Windows 사용자 계정을 나타내는 사용자 계정이 데이터베이스에 있어야 합니다. Windows 그룹을 나타내는 사용자 계정으로는 충분하지 않습니다.