sp_adddistributiondb(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance
새 배포 데이터베이스를 만들고 배포자 스키마를 설치합니다. 배포 데이터베이스는 복제에 사용되는 프로시저, 스키마 및 메타데이터를 저장합니다. 이 저장 프로시저는 배포 데이터베이스를 만들고 복제 배포를 사용하도록 설정하는 데 필요한 테이블 및 저장 프로시저를 설치하기 위해 데이터베이스의 배포자 master
에서 실행됩니다.
구문
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)입니다. 이 경우 NULL
SQL 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입니다. 복제된 명령을 받지 않았고 최대 배포 보존 기간보다 오래된 구독은 비활성으로 표시되며 다시 초기화해야 합니다. 각 비활성 구독에 대해 오류 번호 21011이 발급됩니다. 값 0
은 복제된 트랜잭션이 배포 데이터베이스에 저장되지 않음을 의미합니다.
[ @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 하여 배포 데이터베이스에 복제 개체를 만듭니다. |
2 |
정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다. |
[ @from_scripting = ] from_scripting
정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다.
[ @deletebatchsize_xact = ] deletebatchsize_xact
테이블에서 만료된 트랜잭션을 정리하는 동안 사용할 일괄 처리 크기를 지정합니다 MSRepl_Transactions
. @deletebatchsize_xact 기본값5000
인 int입니다.
적용 대상: 서비스 팩 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
는 모든 유형의 복제에서 사용됩니다. 그러나 이 저장 프로시저는 배포자에서만 실행됩니다.
를 실행하기 전에 sp_adddistributiondb
sp_adddistributor 실행하여 배포자를 구성해야 합니다.
실행하기 전에 실행 sp_adddistributor
sp_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
수 있습니다.