sp_adddistributiondb(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

새 배포 데이터베이스를 만들고 배포자 스키마를 설치합니다. 배포 데이터베이스는 복제본(replica) 사용되는 프로시저, 스키마 및 메타데이터를 저장합니다. 이 저장 프로시저는 배포 데이터베이스를 만들고 복제본(replica) 배포를 사용하도록 설정하는 데 필요한 테이블 및 저장 프로시저를 설치하기 위해 데이터베이스의 배포자 master 에서 실행됩니다.

Transact-SQL 구문 표기 규칙

구문

sp_adddistributiondb
    [ @database = ] N'database'
    [ , [ @data_folder = ] N'data_folder' ]
    [ , [ @data_file = ] N'data_file' ]
    [ , [ @data_file_size = ] data_file_size ]
    [ , [ @log_folder = ] N'log_folder' ]
    [ , [ @log_file = ] N'log_file' ]
    [ , [ @log_file_size = ] log_file_size ]
    [ , [ @min_distretention = ] min_distretention ]
    [ , [ @max_distretention = ] max_distretention ]
    [ , [ @history_retention = ] history_retention ]
    [ , [ @security_mode = ] security_mode ]
    [ , [ @login = ] N'login' ]
    [ , [ @password = ] N'password' ]
    [ , [ @createmode = ] createmode ]
    [ , [ @from_scripting = ] from_scripting ]
    [ , [ @deletebatchsize_xact = ] deletebatchsize_xact ]
    [ , [ @deletebatchsize_cmd = ] deletebatchsize_cmd ]
[ ; ]

인수

[ @database = ] N'database'

만들 배포 데이터베이스의 이름입니다. @database sysname이며 기본값은 없습니다. 지정한 데이터베이스가 이미 있고 배포 데이터베이스로 아직 표시되지 않은 경우 배포를 사용하도록 설정하는 데 필요한 개체가 설치되고 데이터베이스가 배포 데이터베이스로 표시됩니다. 지정한 데이터베이스가 이미 배포 데이터베이스로 활성화된 경우 오류가 반환됩니다.

[ @data_folder = ] N'data_folder'

배포 데이터베이스 데이터 파일을 저장하는 데 사용되는 디렉터리의 이름입니다. @data_folder 기본값NULL인 nvarchar(255)입니다. SQL Server 인스턴스에 대한 데이터 디렉터리가 사용되는 경우 NULL(예 C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data: .

[ @data_file = ] N'data_file'

데이터베이스 파일의 이름입니다. @data_file 기본값NULL인 nvarchar(255)입니다. 이 경우 NULL저장 프로시저는 데이터베이스 이름을 사용하여 파일 이름을 생성합니다.

[ @data_file_size = ] data_file_size

초기 데이터 파일 크기(MB)입니다. @data_file_size 기본값5인 5MB인 int입니다.

[ @log_folder = ] N'log_folder'

데이터베이스 로그 파일의 디렉터리 이름입니다. @log_folder 기본값NULL인 nvarchar(255)입니다. 이 경우 NULLSQL Server 인스턴스에 대한 데이터 디렉터리가 사용됩니다(예: C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data).

[ @log_file = ] N'log_file'

로그 파일의 이름입니다. @log_file 기본값NULL인 nvarchar(255)입니다. 이 경우 NULL저장 프로시저는 데이터베이스 이름을 사용하여 파일 이름을 생성합니다.

[ @log_file_size = ] log_file_size

초기 로그 파일 크기(MB)입니다. @log_file_size int이며 기본값0은 데이터베이스 엔진 허용되는 가장 작은 로그 파일 크기를 사용하여 파일을 만듭니다.

[ @min_distretention = ] min_distretention

트랜잭션이 배포 데이터베이스에서 삭제되기 전의 최소 보존 기간(시간)입니다. @min_distretention 기본값0인 int입니다.

[ @max_distretention = ] max_distretention

트랜잭션이 삭제되기 전의 최대 보존 기간(시간)입니다. @max_distretention 기본값72인 int입니다. 복제본(replica)ted 명령을 받지 않았고 최대 배포 보존 기간보다 오래된 구독은 비활성으로 표시되며 다시 초기화해야 합니다. 각 비활성 구독에 대해 오류 번호 21011이 발급됩니다. 값 0 은 복제본(replica)ted 트랜잭션이 배포 데이터베이스에 저장되지 않음을 의미합니다.

[ @history_retention = ] history_retention

기록을 보존할 시간 수입니다. @history_retention int이며 기본값48은 2일을 의미합니다.

[ @security_mode = ] security_mode

배포자에 연결할 때 사용할 보안 모드입니다. @security_mode 기본값1인 int입니다.

  • 0 은 SQL Server 인증을 지정합니다.
  • 1는 Windows 인증 지정합니다.

[ @login = ] N'login'

배포 데이터베이스를 만들기 위해 배포자에 연결할 때 사용되는 로그인 이름입니다. @login sysname이며 기본값은 .입니다NULL. @security_mode 설정된 0경우 @login 필요합니다.

[ @password = ] N'password'

배포자에 연결할 때 사용되는 암호입니다. @password sysname이며 기본값은 .입니다NULL. @security_mode 설정된 0경우 @password 필요합니다.

[ @createmode = ] createmode

@createmode int이며 다음 값 중 하나일 수 있습니다.

설명
0 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.
1 (기본값) CREATE DATABASE또는 기존 데이터베이스를 사용한 다음 파일을 적용 instdist.sql 하여 배포 데이터베이스에 복제본(replica)tion 개체를 만듭니다.
2 정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.

[ @from_scripting = ] from_scripting

정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.

[ @deletebatchsize_xact = ] deletebatchsize_xact

테이블에서 만료된 트랜잭션을 클린 동안 사용할 일괄 처리 크기를 지정합니다MSRepl_Transactions. @deletebatchsize_xact 기본값5000int입니다.

적용 대상: 서비스 팩 4가 있는 SQL Server 2012(11.x), 서비스 팩 2가 있는 SQL Server 2016(13.x), SQL Server 2017(14.x) 이상 버전.

[ @deletebatchsize_cmd = ] deletebatchsize_cmd

테이블에서 만료된 명령을 클린 동안 사용할 일괄 처리 크기를 지정합니다MSRepl_Commands. @deletebatchsize_cmd 기본값2000인 int입니다.

적용 대상: 서비스 팩 4가 있는 SQL Server 2012(11.x), 서비스 팩 2가 있는 SQL Server 2016(13.x), SQL Server 2017(14.x) 이상 버전.

반환 코드 값

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

설명

sp_adddistributiondb는 모든 유형의 복제본(replica)에서 사용됩니다. 그러나 이 저장 프로시저는 배포자에서만 실행됩니다.

를 실행하기 전에 sp_adddistributiondbsp_adddistributor 실행하여 배포자를 구성해야 합니다.

실행하기 전에 실행 sp_adddistributorsp_adddistributiondb합니다.

예제

이 스크립트는 SQLCMD 스크립팅 변수를 사용하며 SQLCMD 모드에서 실행해야 합니다. 변수는 형식 $(MyVariable)입니다. 명령줄 및 SQL Server Management Studio에서 스크립팅 변수를 사용하는 방법에 대한 자세한 내용은 복제 스크립트 실행을 참조 하세요.

DECLARE @distributor AS SYSNAME;
DECLARE @distributionDB AS SYSNAME;
DECLARE @publisher AS SYSNAME;
DECLARE @directory AS NVARCHAR(500);
DECLARE @publicationDB AS SYSNAME;

-- Specify the Distributor name.
SET @distributor = $(DistPubServer);

-- Specify the distribution database.
SET @distributionDB = N'distribution';

-- Specify the Publisher name.
SET @publisher = $(DistPubServer);

-- Specify the replication working directory.
SET @directory = N'\\' + $(DistPubServer) + '\repldata';

-- Specify the publication database.
SET @publicationDB = N'AdventureWorks2022';

-- Install the server MYDISTPUB as a Distributor using the defaults,
-- including autogenerating the distributor password.
USE master

EXEC sp_adddistributor @distributor = @distributor;

-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master

EXEC sp_adddistributiondb @database = @distributionDB,
    @security_mode = 1;
GO

-- Create a Publisher and enable AdventureWorks2022 for replication.
-- Add MYDISTPUB as a publisher with MYDISTPUB as a local distributor
-- and use Windows Authentication.
DECLARE @distributionDB AS SYSNAME;
DECLARE @publisher AS SYSNAME;

-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $( DistPubServer );

USE [distribution]

EXEC sp_adddistpublisher @publisher = @publisher,
    @distribution_db = @distributionDB,
    @security_mode = 1;
GO

사용 권한

sysadmin 고정 서버 역할의 멤버만 실행할 sp_adddistributiondb수 있습니다.