다음을 통해 공유


sp_addpublication(Transact-SQL)

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

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

sp_addpublication [ @publication = ] 'publication'
    [ , [ @taskid = ] tasked ]
    [ , [ @restricted = ] 'restricted' ]
    [ , [ @sync_method = ] 'sync_method' ]
    [ , [ @repl_freq = ] 'repl_freq' ]
    [ , [ @description = ] 'description' ]
    [ , [ @status = ] 'status' ]
    [ , [ @independent_agent = ] 'independent_agent' ]
    [ , [ @immediate_sync = ] 'immediate_sync' ]
    [ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
    [ , [ @allow_push = ] 'allow_push'
    [ , [ @allow_pull = ] 'allow_pull' ]
    [ , [ @allow_anonymous = ] 'allow_anonymous' ]
    [ , [ @allow_sync_tran = ] 'allow_sync_tran' ]
    [ , [ @autogen_sync_procs = ] 'autogen_sync_procs' ]
    [ , [ @retention = ] retention ]
    [ , [ @allow_queued_tran= ] 'allow_queued_updating' ]
    [ , [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder' ]
    [ , [ @alt_snapshot_folder= ] 'alternate_snapshot_folder' ]
    [ , [ @pre_snapshot_script= ] 'pre_snapshot_script' ]
    [ , [ @post_snapshot_script= ] 'post_snapshot_script' ]
    [ , [ @compress_snapshot= ] 'compress_snapshot' ]
    [ , [ @ftp_address = ] 'ftp_address' ]
    [ , [ @ftp_port= ] ftp_port ]
    [ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ]
    [ , [ @ftp_login = ] 'ftp_login' ]
    [ , [ @ftp_password = ] 'ftp_password' ]
    [ , [ @allow_dts = ] 'allow_dts' ]
    [ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
    [ , [ @conflict_policy = ] 'conflict_policy' ]
    [ , [ @centralized_conflicts = ] 'centralized_conflicts' ] 
    [ , [ @conflict_retention = ] conflict_retention ]
    [ , [ @queue_type = ] 'queue_type' ]
    [ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
    [ , [ @logreader_job_name = ] 'logreader_agent_name' ]
    [ , [ @qreader_job_name = ] 'queue_reader_agent_name' ]
    [ , [ @publisher = ] 'publisher' ] 
    [ , [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @enabled_for_p2p = ] 'enabled_for_p2p' ]
    [ , [ @publish_local_changes_only = ] 'publish_local_changes_only' ]
    [ , [ @enabled_for_het_sub = ] 'enabled_for_het_sub' ]
    [ , [ @p2p_conflictdetection = ] 'p2p_conflictdetection' ]
    [ , [ @p2p_originator_id = ] p2p_originator_id
    [ , [ @p2p_continue_onconflict = ] 'p2p_continue_onconflict'
    [ , [ @allow_partition_switch = ] 'allow_partition_switch'
    [ , [ @replicate_partition_switch = ]'replicate_partition_switch'

인수

  • [ @publication=] 'publication'
    만들 게시의 이름입니다. publication은 sysname이며 기본값은 없습니다. 이름은 반드시 데이터베이스 내에서 고유해야 합니다.

  • [ @taskid=] taskid
    이전 버전과의 호환성을 위해서만 지원됩니다. sp_addpublication_snapshot(Transact-SQL)를 사용하십시오.

  • [ @restricted=] 'restricted'
    이전 버전과의 호환성을 위해서만 지원됩니다. default_access를 사용하십시오.

  • [ @sync_method=] 'sync_method**'**
    동기화 모드입니다. sync_method는 nvarchar(13)이며 다음 값 중 하나일 수 있습니다.

    설명

    native

    모든 테이블의 기본 모드 대량 복사 프로그램 출력을 생성합니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    character

    모든 테이블의 문자 모드 대량 복사 프로그램 출력을 생성합니다. Oracle 게시자의 경우 character는 스냅숏 복제에만 유효합니다.

    concurrent

    모든 테이블의 기본 모드 대량 복사 프로그램 출력을 생성하지만 스냅숏을 실행하는 동안 테이블을 잠그지 않습니다. 트랜잭션 게시에 대해서만 지원됩니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    concurrent_c

    모든 테이블의 문자 모드 대량 복사 프로그램 출력을 생성하지만 스냅숏을 실행하는 동안 테이블을 잠그지 않습니다. 트랜잭션 게시에 대해서만 지원됩니다.

    database snapshot

    데이터베이스 스냅숏에서 모든 테이블의 기본 모드 대량 복사 프로그램 출력을 생성합니다. 일부 Microsoft SQL Server 버전에서는 데이터베이스 스냅숏을 사용할 수 없습니다. SQL Server 버전에서 지원하는 기능 목록을 보려면 SQL Server 2012 버전에서 지원하는 기능을 참조하십시오.

    database snapshot character

    데이터베이스 스냅숏에서 모든 테이블의 문자 모드 대량 복사 프로그램 출력을 생성합니다. 일부 Microsoft SQL Server 버전에서는 데이터베이스 스냅숏을 사용할 수 없습니다. SQL Server 버전에서 지원하는 기능 목록을 보려면 SQL Server 2012 버전에서 지원하는 기능을 참조하십시오.

    NULL(기본값)

    Microsoft SQL Server 게시자의 경우 기본값은 native입니다. SQL Server 이외 게시자의 경우에는 repl_freq 값이 Snapshot일 경우 기본값이 character이고 그 외의 모든 경우에는 기본값이 concurrent_c입니다.

  • [ @repl_freq=] 'repl_freq'
    복제 빈도의 유형입니다. repl_freq는 nvarchar(10)이며 다음 값 중 하나일 수 있습니다.

    설명

    continuous(기본값)

    게시자가 모든 로그 기반 트랜잭션의 출력을 제공합니다. SQL Server 이외 게시자의 경우에는 sync_method가 concurrent_c로 설정되어 있어야 합니다.

    snapshot

    게시자가 예약된 동기화 이벤트만 생성합니다. SQL Server 이외 게시자의 경우에는 sync_methodcharacter로 설정되어 있어야 합니다.

  • [ @description=] 'description'
    게시에 대한 선택적인 설명입니다. description은 nvarchar(255)이며 기본값은 NULL입니다.

  • [ @status=] 'status'
    게시 데이터를 사용할 수 있는지 여부를 지정합니다. status는 nvarchar(8)이며 다음 값 중 하나일 수 있습니다.

    설명

    active

    구독자가 게시 데이터를 즉시 사용할 수 있습니다.

    inactive(기본값)

    게시가 처음 작성될 때 구독자가 게시 데이터를 사용할 수 없습니다. 구독할 수는 있으나 구독이 처리되지 않습니다.

    Oracle 게시자에 대해서는 지원되지 않습니다.

  • [ @independent_agent=] 'independent_agent'
    해당 게시에 독립 실행형 배포 에이전트가 있는지 여부를 지정합니다. independent_agent는 nvarchar(5)이며 기본값은 FALSE입니다. true인 경우 이 게시에 대한 독립 실행형 배포 에이전트가 있는 것입니다. false인 경우 게시는 공유된 배포 에이전트를 사용하며 각 게시자 데이터베이스/구독자 데이터베이스 쌍은 단일 공유 에이전트를 가집니다.

  • [ @immediate_sync=] 'immediate_synchronization'
    스냅숏 에이전트가 실행될 때마다 게시에 대한 동기화 파일이 생성되는지 여부를 지정합니다. immediate_synchronization은 nvarchar(5)이며 기본값은 FALSE입니다. true인 경우 스냅숏 에이전트가 실행될 때마다 동기화 파일이 생성되거나 다시 생성됩니다. 구독을 만들기 전에 스냅숏 에이전트가 완료되면 구독자가 즉시 동기화 파일을 얻을 수 있습니다. 새 구독은 스냅숏 에이전트를 가장 최근에 실행하여 생성된 최신 동기화 파일을 가져옵니다. immediate_synchronization이 true가 되려면 independent_agent가 true여야 합니다. false인 경우 새 구독이 있을 때만 동기화 파일이 만들어집니다. 기존 게시에 새 아티클을 증분 방식으로 추가할 때는 각 구독에 대해 sp_addsubscription을 호출해야 합니다. 구독자는 스냅숏 에이전트가 시작되어 완료될 때까지는 구독 이후에 동기화 파일을 받을 수 없습니다.

  • [ @enabled_for_internet=] 'enabled_for_internet'
    게시에 인터넷을 사용할 수 있는지 여부를 나타내며 구독자에 스냅숏 파일을 전송할 때 FTP(파일 전송 프로토콜)를 사용할 수 있는지 여부를 결정합니다. enabled_for_internet은 nvarchar(5)이며 기본값은 FALSE입니다. true인 경우 게시의 동기화 파일은 C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp 디렉터리에 저장됩니다. 사용자는 반드시 Ftp 디렉터리를 만들어야 합니다.

  • [ @allow_push=] 'allow_push'
    지정된 게시에 대해 밀어넣기 구독을 만들 수 있는지 여부를 지정합니다. allow_push는 nvarchar(5)이며 기본값은 게시에 대한 밀어넣기 구독을 허용하는 TRUE입니다.

  • [ @allow_pull=] 'allow_pull'
    지정된 게시에 대해 끌어오기 구독을 만들 수 있는지 여부를 지정합니다. allow_pull은 nvarchar(5)이며 기본값은 FALSE입니다. false인 경우 게시에서 끌어오기 구독을 허용하지 않습니다.

  • [ @allow_anonymous=] 'allow_anonymous'
    지정된 게시에 대해 익명 구독을 만들 수 있는지 여부를 지정합니다. allow_anonymous는 nvarchar(5)이며 기본값은 FALSE입니다. true인 경우 immediate_synchronization도 true로 설정해야 합니다. false인 경우 게시에서 익명 구독을 허용하지 않습니다.

  • [ @allow_sync_tran=] 'allow_sync_tran'
    게시에 대해 즉시 업데이트 구독이 허용되는지 여부를 지정합니다. allow_sync_tran은 nvarchar(5)이며 기본값은 FALSE입니다. trueOracle 게시자에 대해서는 지원되지 않습니다.

  • [ @autogen_sync_procs=] '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
    구독 작업의 보존 기간(시간)입니다. retention은 int이며 기본값은 336시간입니다. 구독이 보존 기간 내에 활성화되지 않으면 만료되어 제거됩니다. 해당 값은 게시자가 사용하는 배포 데이터베이스의 최대 보존 기간보다 길 수 있습니다. 0인 경우 잘 알려진 게시 구독은 만료되지 않으며 만료된 구독 정리 에이전트에 의해 제거되지 않습니다.

  • [ @allow_queued_tran= ] 'allow_queued_updating'
    게시자에 적용할 수 있을 때까지 구독자에서 변경 내용을 큐에 넣을지 여부를 설정하거나 해제합니다. allow_queued_updating은 nvarchar(5)이며 기본값은 FALSE입니다. false인 경우 구독자에서의 변경 내용이 큐에 들어가지 않습니다. trueOracle 게시자에 대해서는 지원되지 않습니다.

  • [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder'
    스냅숏 파일을 기본 폴더에 저장하는지 여부를 지정합니다. snapshot_in_default_folder는 nvarchar(5)이며 기본값은 TRUE입니다. true인 경우 기본 폴더에서 스냅숏 파일을 찾을 수 있습니다. false인 경우 alternate_snapshot_folder로 지정된 대체 위치에 스냅숏 파일을 저장합니다. 대체 위치는 다른 서버, 네트워크 드라이브 또는 이동식 미디어(CD-ROM 또는 이동식 디스크 등)가 될 수 있습니다. 구독자가 나중에 검색할 수 있도록 스냅숏 파일을 FTP 사이트에 저장할 수도 있습니다. 이 매개 변수는 true이면서 @alt_snapshot_folder 매개 변수에 위치가 있을 수도 있습니다. 이 조합은 스냅숏 파일이 기본 위치 및 대체 위치 양쪽 모두에 저장되도록 지정합니다.

  • [ @alt_snapshot_folder= ] 'alternate_snapshot_folder'
    스냅숏의 대체 폴더 위치를 지정합니다. alternate_snapshot_folder는 nvarchar(255)이며 기본값은 NULL입니다.

  • [ @pre_snapshot_script= ] 'pre_snapshot_script'
    .sql 파일 위치에 대한 포인터를 지정합니다. pre_snapshot_script는 nvarchar(255),이며 기본값은 NULL입니다. 배포 에이전트는 구독자에서 스냅숏을 적용할 때 복제된 개체 스크립트를 실행하기 전에 프리 스냅숏 스크립트를 실행합니다. 구독 데이터베이스에 연결할 때 배포 에이전트에서 사용되는 보안 컨텍스트에서 스크립트가 실행됩니다.

  • [ @post_snapshot_script= ] 'post_snapshot_script'
    .sql 파일 위치에 대한 포인터를 지정합니다. post_snapshot_script는 nvarchar(255)이며 기본값은 NULL입니다. 배포 에이전트는 초기 동기화 중 복제된 다른 모든 개체 스크립트 및 데이터가 적용된 후 포스트 스냅숏 스크립트를 실행합니다. 구독 데이터베이스에 연결할 때 배포 에이전트에서 사용되는 보안 컨텍스트에서 스크립트가 실행됩니다.

  • [ @compress_snapshot= ] 'compress_snapshot'
    @alt_snapshot_folder 위치에 작성되는 스냅숏이 Microsoft CAB 형식으로 압축되도록 지정합니다. compress_snapshot은 nvarchar(5)이며 기본값은 FALSE입니다. false는 스냅숏이 압축되지 않도록 지정하며, true는 스냅숏이 압축되도록 지정합니다. 2GB(기가바이트)를 넘는 스냅숏 파일은 압축할 수 없습니다. 압축된 스냅숏 파일은 배포 에이전트가 실행되는 위치에 풀립니다. 압축 파일이 구독자에 풀리도록 압축 스냅숏에는 일반적으로 끌어오기 구독이 사용됩니다. 기본 폴더에 있는 스냅숏은 압축할 수 없습니다.

  • [ @ftp_address = ] 'ftp_address'
    배포자용 FTP 서비스의 네트워크 주소입니다. ftp_address는 sysname이며 기본값은 NULL입니다. 선택할 구독자의 배포 에이전트 또는 병합 에이전트에 대한 게시 스냅숏 파일의 위치를 지정합니다. 이 속성은 게시별로 저장되므로 각 게시마다 ftp_address가 다를 수 있습니다. 게시는 FTP를 사용하여 스냅숏 전파를 지원해야 합니다.

  • [ @ftp_port= ] ftp_port
    배포자용 FTP 서비스의 포트 번호입니다. ftp_port는 int이며 기본값은 21입니다. 선택할 구독자의 배포 에이전트 또는 병합 에이전트에 대한 게시 스냅숏 파일의 위치를 지정합니다. 이 속성은 게시별로 저장되므로 각 게시마다 자체 ftp_port가 있을 수 있습니다.

  • [ @ftp_subdirectory = ] 'ftp_subdirectory'
    게시에서 FTP를 사용하는 스냅숏 전파를 지원하는 경우 선택할 구독자의 배포 에이전트 또는 병합 에이전트에 사용 가능한 스냅숏 파일의 위치를 지정합니다. ftp_subdirectory는 nvarchar(255)이며 기본값은 NULL입니다. 이 속성은 게시별로 저장되므로 각 게시는 자체 ftp_subdirctory를 가지거나 NULL 값을 지정하여 하위 디렉터리가 없도록 선택할 수 있습니다.

  • [ @ftp_login = ] 'ftp_login'
    FTP 서비스 연결에 사용되는 사용자 이름입니다. ftp_login은 sysname이며 기본값은 ANONYMOUS입니다.

  • [ @ftp_password = ] 'ftp_password'
    FTP 서비스에 연결할 때 사용되는 사용자 암호입니다. ftp_password는 sysname이며 기본값은 NULL입니다.

  • [ @allow_dts = ] 'allow_dts'
    게시에서 데이터 변환을 허용하도록 지정합니다. 구독을 만들 때 DTS 패키지를 지정할 수 있습니다. allow_transformable_subscriptions는 nvarchar(5)이며 기본값은 DTS 변환을 허용하지 않는 FALSE입니다. allow_dts가 true인 경우 sync_method를 character 또는 concurrent_c로 설정해야 합니다.

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

  • [ @allow_subscription_copy = ] 'allow_subscription_copy'
    이 게시를 구독하는 구독 데이터베이스를 복사하는 기능을 설정 또는 해제합니다. allow_subscription_copy는 nvarchar(5)이며 기본값은 FALSE입니다.

  • [ @conflict_policy = ] 'conflict_policy'
    지연 업데이트 구독자 옵션을 사용할 때 수행하는 충돌 해결 정책을 지정합니다. conflict_policy는 nvarchar(100)이며 기본값은 NULL이고 다음 값 중 하나일 수 있습니다.

    설명

    pub wins

    충돌 시 게시자 내용을 적용합니다.

    sub reinit

    구독을 다시 초기화합니다.

    sub wins

    충돌 시 구독자 내용을 적용합니다.

    NULL(기본값)

    NULL이고 게시가 스냅숏 게시인 경우 기본 정책은 sub reinit가 됩니다. NULL이고 게시가 스냅숏 게시가 아닌 경우 pub wins가 기본 정책이 됩니다.

    Oracle 게시자에 대해서는 지원되지 않습니다.

  • [ @centralized_conflicts = ] 'centralized_conflicts'
    게시자에 충돌 레코드를 저장하는지 여부를 지정합니다. centralized_conflicts는 nvarchar(5)이며 기본값은 TRUE입니다. true인 경우 충돌 레코드가 게시자에 저장됩니다. false인 경우 충돌 레코드는 충돌이 발생한 구독자 및 게시자 양쪽 모두에 저장됩니다. Oracle 게시자에 대해서는 지원되지 않습니다.

  • [ @conflict_retention = ] conflict_retention
    충돌 보존 기간(일)을 지정합니다. 피어 투 피어 트랜잭션 복제 및 지연 업데이트 구독에 대해 충돌 메타데이터가 저장되는 기간입니다. conflict_retention은 int이며 기본값은 14입니다. Oracle 게시자에 대해서는 지원되지 않습니다.

  • [ @queue_type = ] 'queue_type'
    사용할 큐의 유형을 지정합니다. queue_type은 nvarchar(10)이며 기본값은 NULL이고 다음 값 중 하나일 수 있습니다.

    설명

    sql

    SQL Server를 사용하여 트랜잭션을 저장합니다.

    NULL(기본값)

    SQL Server를 사용하여 트랜잭션을 저장하도록 지정하는 sql이 기본값입니다.

    [!참고]

    MSMQ(Microsoft Message Queuing) 사용이 더 이상 지원되지 않습니다. msmq 값을 지정하면 경고가 발생되며 복제가 자동으로 sql 값으로 설정됩니다.

    Oracle 게시자에 대해서는 지원되지 않습니다.

  • [ @add_to_active_directory = ] 'add_to_active_directory'
    이 매개 변수는 더 이상 사용되지 않으며 이전 버전 스크립트와의 호환성을 위해서만 지원됩니다. 더 이상 Microsoft Active Directory에 게시 정보를 추가할 수 없습니다.

  • [ @logreader_job_name = ] 'logreader_agent_name'
    기존 에이전트 작업의 이름입니다. logreader_agent_name은 sysname이며 기본값은 NULL입니다. 이 매개 변수는 로그 판독기 에이전트가 새로 만든 작업 대신 기존 작업을 사용하는 경우에만 지정됩니다.

  • [ @qreader_job_name = ] 'queue_reader_agent_name'
    기존 에이전트 작업의 이름입니다. queue_reader_agent_name은 sysname이며 기본값은 NULL입니다. 이 매개 변수는 큐 판독기 에이전트가 새로 만든 작업 대신 기존 작업을 사용하는 경우에만 지정됩니다.

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

    [!참고]

    게시를 SQL Server 게시자에 추가할 때는 publisher를 사용하면 안 됩니다.

  • [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup'
    구독자가 초기 스냅숏 대신 백업으로부터 이 게시에 대한 구독을 초기화할 수 있는지 여부를 나타냅니다. allow_initialize_from_backup은 nvarchar(5)이며 다음 값 중 하나일 수 있습니다.

    설명

    true

    백업으로부터 초기화할 수 있습니다.

    false

    백업으로부터 초기화할 수 없습니다.

    NULL(기본값)

    피어 투 피어 복제 토폴로지에서 게시에 대한 기본값은 true이고 다른 모든 게시에 대한 기본값은 false입니다.

    자세한 내용은 스냅숏 없이 트랜잭션 구독 초기화를 참조하십시오.

    주의 사항주의

    구독자 데이터가 누락되는 것을 방지하려면 @allow_initialize_from_backup = N'true'에서 sp_addpublication을 사용할 때 항상 @immediate_sync = N'true'를 사용하십시오.

  • [ @replicate_ddl = ] replicate_ddl
    게시에 대해 스키마 복제가 지원되는지 여부를 나타냅니다. replicate_ddl은 int이며 기본값은 SQL Server 게시자의 경우 1이고 SQL Server 이외 게시자의 경우 0입니다. 1은 게시자에서 실행된 DDL(데이터 정의 언어) 문이 복제됨을 나타내고 0은 DDL 문이 복제되지 않음을 나타냅니다. Oracle 게시자에 대해서는 스키마 복제가 지원되지 않습니다. 자세한 내용은 게시 데이터베이스의 스키마 변경을 참조하십시오.

    @replicate\_ddl 매개 변수는 DDL 문이 열을 추가하는 경우에 인식됩니다. @replicate\_ddl 매개 변수는 DDL 문이 다음과 같은 이유로 열을 변경하거나 삭제할 경우에 무시됩니다.

    • 열이 삭제될 경우 새 DML 문에 삭제된 열이 포함되지 않도록 sysarticlecolumns를 업데이트해야 합니다. 삭제된 열이 포함되면 배포 에이전트가 실패합니다. 복제가 항상 스키마 변경 내용을 복제해야 하므로 @replicate\_ddl 매개 변수가 무시됩니다.

    • 열이 변경될 경우 원본 데이터 형식 또는 Null 허용 여부가 변경되었을 수 있으므로 DML 문에 구독자에 있는 테이블과 호환되지 않는 값이 포함될 수 있습니다. 이러한 DML 문으로 인해 배포 에이전트가 실패할 수 있습니다. 복제가 항상 스키마 변경 내용을 복제해야 하므로 @replicate\_ddl 매개 변수가 무시됩니다.

    • DDL 문이 새 열을 추가하는 경우 sysarticlecolumns 에는 새 열이 포함되지 않습니다. DML 문은 새 열에 대해 데이터 복제를 시도하지 않습니다. DDL을 복제하거나 복제하지 않는 경우가 모두 허용되므로 매개 변수가 인식됩니다.

  • [ @enabled_for_p2p = ] 'enabled_for_p2p'
    피어 투 피어 복제 토폴로지에서 게시가 사용되도록 설정합니다. enabled_for_p2p는 nvarchar(5)이며 기본값은 FALSE입니다. 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 = ] 'publish_local_changes_only'
    정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다.

  • [ @enabled_for_het_sub= ] 'enabled_for_het_sub'
    SQL Server 이외 구독자를 지원하도록 게시를 설정합니다. enabled_for_het_sub는 nvarchar(5)이며 기본값은 FALSE입니다. 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= ] 'p2p_conflictdetection'
    피어 투 피어 복제에 게시가 사용되도록 설정된 경우 배포 에이전트에서 충돌을 검색하도록 설정합니다. p2p_conflictdetection은 nvarchar(5)이며 기본값은 TRUE입니다. 자세한 내용은 피어 투 피어 복제에서 충돌 검색를 참조하십시오.

  • [ @p2p_originator_id= ] p2p_originator_id
    피어 투 피어 토폴로지에 있는 노드의 ID를 지정합니다. p2p_originator_id는 int이며 기본값은 NULL입니다. 이 ID는 p2p_conflictdetection이 TRUE로 설정된 경우 충돌 검색에 사용됩니다. 토폴로지에 사용되지 않은 0이 아닌 양수 ID를 지정합니다. 이미 사용된 ID 목록을 보려면 sp_help_peerconflictdetection을 실행합니다.

  • [ @p2p_continue_onconflict= ] 'p2p_continue_onconflict'
    충돌이 검색된 후 배포 에이전트에서 변경 내용을 계속 처리할지 여부를 결정합니다. p2p_continue_onconflict는 nvarchar(5)이며 기본값은 FALSE입니다.

    주의 사항주의

    기본값인 FALSE를 사용하는 것이 좋습니다. 이 옵션이 TRUE로 설정된 경우 배포 에이전트는 송신자 ID가 가장 높은 노드에서 충돌 행을 적용하여 토폴로지의 데이터를 일치시킵니다. 이 방법으로 데이터가 일치하게 되지 않는 경우도 있습니다. 충돌이 검색된 후 토폴로지의 일관성을 확인해야 합니다. 자세한 내용은 피어 투 피어 복제에서 충돌 검색의 "충돌 처리"를 참조하십시오.

  • [ @allow_partition_switch= ] 'allow_partition_switch'
    ALTER TABLE…SWITCH 문을 게시된 데이터베이스에 대해 실행할 수 있는지 여부를 지정합니다. allow_partition_switch는 nvarchar(5)이며 기본값은 FALSE입니다. 자세한 내용은 분할 테이블 및 인덱스 복제를 참조하십시오.

  • [ @replicate_partition_switch= ] 'replicate_partition_switch'
    게시된 데이터베이스에 대해 실행되는 ALTER TABLE…SWITCH 문을 구독자에 복제해야 하는지 여부를 지정합니다. replicate_partition_switch는 nvarchar(5)이며 기본값은 FALSE입니다. 이 옵션은 allow_partition_switch를 TRUE로 설정한 경우에만 유효합니다.

반환 코드 값

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 변경 내용을 게시에 적용하려면 sp_changepublication을 먼저 실행하여 replicate_ddl을 0으로 설정해야 합니다. 복제되지 않는 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 그룹을 나타내는 사용자 계정은 충분하지 않습니다.

참고 항목

참조

sp_addlogreader_agent(Transact-SQL)

sp_addpublication_snapshot(Transact-SQL)

sp_changepublication(Transact-SQL)

sp_droppublication(Transact-SQL)

sp_helppublication(Transact-SQL)

sp_replicationdboption(Transact-SQL)

복제 저장 프로시저(Transact-SQL)

개념

데이터 및 데이터베이스 개체 게시