다음을 통해 공유


sp_addpublication(Transact-SQL)

적용 대상: SQL Server Azure SQL Managed Instance

스냅샷 또는 트랜잭션 게시를 만듭니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.

Transact-SQL 구문 표기 규칙

구문

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)입니다. trueOracle 게시자에 대해 지원되지 않습니다.

[ @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구독자의 변경 내용이 큐에 대기되지 않습니다.
  • trueOracle 게시자에 대해 지원되지 않습니다.

[ @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.로 설정해야 합니다.

trueOracle 게시자에 대해 지원되지 않습니다.

[ @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 기본값NULLint입니다. 이 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 PROCEDUREALTER FUNCTIONALTER 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 그룹을 나타내는 사용자 계정으로는 충분하지 않습니다.