Поделиться через


sp_adddistributiondb (Transact-SQL)

Создает новую базу данных распространителя и устанавливает схему Distributor. В базе данных распространителя хранятся процедуры, схема и метаданные, используемые при репликации. С помощью этой хранимой процедуры на стороне распространителя в базе данных master создается база данных распространителя и устанавливаются необходимые таблицы и хранимые процедуры, которые требуются для включения распространения репликации.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

sp_adddistributiondb [ @database= ] 'database' 
    [ , [ @data_folder= ] 'data_folder' ] 
    [ , [ @data_file= ] 'data_file' ] 
    [ , [ @data_file_size= ] data_file_size ] 
    [ , [ @log_folder= ] 'log_folder' ] 
    [ , [ @log_file= ] '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= ] 'login' ] 
    [ , [ @password= ] 'password' ] 
    [ , [ @createmode= ] createmode ]
    [ , [ @from_scripting = ] from_scripting ]

Аргументы

  • [ @database=] 'database'
    Имя создаваемой базы данных распространителя. Аргумент database имеет тип sysname и не имеет значения по умолчанию. Если указанная база данных существует и не помечена как база данных распространителя, то устанавливаются объекты, необходимые для включения распространения, и база данных помечается как база данных распространителя. Если указанная база данных уже включена как база данных распространителя, то возвращается сообщение об ошибке.
  • [ @data_folder=] 'data_folder'
    Имя каталога для хранения файла данных в базе данных распространителя. Аргумент data_folder имеет тип nvarchar(255) и значение по умолчанию NULL. Если аргумент принимает значение NULL, то используется каталог данных для текущего экземпляра Microsoft SQL Server, например: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL.1\Data.
  • [ @data_file=] 'data_file'
    Имя файла базы данных. Аргумент data_file имеет тип nvarchar(255) и значение по умолчанию database. Если аргумент имеет значение NULL, то хранимая процедура создает имя файла на основе имени базы данных.
  • [ @data_file_size=] data_file_size
    Первоначальный размер файла данных в мегабайтах (МБ). Аргумент data_file_size имеет тип int и значение по умолчанию 5 МБ.
  • [ @log_folder=] 'log_folder'
    Имя каталога для файла журнала базы данных. Аргумент log_folder имеет тип nvarchar(255) и значение по умолчанию NULL. Если аргумент принимает значение NULL, то используется каталог данных для текущего экземпляра SQL Server (например: C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL.1\Data).
  • [ @log_file=] 'log_file'
    Имя файла журнала. Аргумент log_file имеет тип nvarchar(255) и значение по умолчанию NULL. Если аргумент имеет значение NULL, хранимая процедура формирует имя файла, используя имя базы данных.
  • [ @log_file_size=] log_file_size
    Начальный размер файла журнала в мегабайтах (МБ). Аргумент log_file_size имеет тип int и значение по умолчанию 0 МБ, то есть задается минимальный размер файла журнала, разрешенный SQL Server.
  • [ @min_distretention=] min_distretention
    Минимальный срок хранения до удаления транзакций из базы данных распространителя (в часах). Аргумент min_distretention имеет тип int и значение по умолчанию 0 часов.
  • [ @max_distretention=] max_distretention
    Максимальный срок хранения до удаления транзакций (в часах). Аргумент max_distretention имеет тип int и значение по умолчанию 72 часа. Подписки, не получившие реплицируемые команды и хранящиеся дольше, чем позволяет значение максимального срока хранения, помечаются как неактивные; их необходимо повторно инициализировать. Для каждой неактивной подписки выполняется инструкция RAISERROR 21011. 0 означает, что реплицируемые транзакции не хранятся в базе данных распространителя.
  • [ @history_retention=] history_retention
    Время хранения журнала (в часах). Аргумент history_retention имеет тип int и значение по умолчанию 48.
  • [ @security_mode=] security_mode
    Режим безопасности, применяемый при подключении к распространителю. Аргумент security_mode имеет тип int и значение по умолчанию 1. 0 = проверка подлинности SQL Server, 1 = встроенная проверка подлинности Windows.
  • [ @login=] 'login'
    Имя входа, которое используется при подключении к распространителю для создания базы данных распространителя. Этот аргумент является обязательным, если аргумент security_mode принимает значение 0. Аргумент login имеет тип sysname и значение по умолчанию NULL.
  • [ @password=] 'password'
    Пароль, используемый при подключении к распространителю. Необходим, если аргумент security_mode принимает значение 0. Аргумент password имеет тип sysname и значение по умолчанию NULL.
  • [ @createmode=] createmode
    Аргумент createmode имеет тип int, значение по умолчанию 0 и может принимать следующие значения:

    Значение Описание

    0 (по умолчанию)

    CREATE DATABASE — база данных создается путем присоединения базы данных распространителя с помощью копий шаблонных файлов базы данных распространителя (distmdl.mdf).

    1

    CREATE DATABASE или использование существующей базы данных и последующее применение файлов instdist.sql для создания объектов репликации в базе данных распространителя.

    2

    Только для внутреннего использования.

  • [ @from_scripting= ] from_scripting
    Только для внутреннего использования.

Значения кодов возврата

0 (успешное завершение) или 1 (неуспешное завершение)

Замечания

Хранимая процедура sp_adddistributiondb используется при репликации любого типа. Однако эта хранимая процедура может выполняться только на стороне распространителя.

Перед запуском хранимой процедуры sp_adddistributiondb следует настроить распространителя с помощью хранимой процедуры sp_adddistributor.

Хранимую процедуру sp_adddistributor следует запускать до sp_adddistributiondb.

Разрешения

Процедуру sp_adddistributiondb могут выполнять только члены фиксированной серверной роли sysadmin.

Пример

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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".

-- Install the Distributor and the distribution database.
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'AdventureWorks'; 

-- 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 AdventureWorks 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 

См. также

Справочник

sp_changedistributiondb (Transact-SQL)
sp_dropdistributiondb (Transact-SQL)
sp_helpdistributiondb (Transact-SQL)
Системные хранимые процедуры (Transact-SQL)

Другие ресурсы

How to: Configure Publishing and Distribution (Replication Transact-SQL Programming)
Настройка распространителя

Справка и поддержка

Получение помощи по SQL Server 2005