sp_adddistpublisher (Transact-SQL)

Настраивает издатель для использования указанной базы данных распространителя. Эта хранимая процедура выполняется на распространителе в любой базе данных. Имейте в виду, что до запуска этой хранимой процедуры необходимо выполнить хранимые процедуры sp_adddistributor (Transact-SQL) и sp_adddistributiondb (Transact-SQL).

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

Синтаксис

sp_adddistpublisher [ @publisher= ] 'publisher' 
        , [ @distribution_db= ] 'distribution_db' 
    [ , [ @security_mode= ] security_mode ] 
    [ , [ @login= ] 'login' ] 
    [ , [ @password= ] 'password' ] 
    [ , [ @working_directory= ] 'working_directory' ] 
    [ , [ @trusted= ] 'trusted' ] 
    [ , [ @encrypted_password= ] encrypted_password ] 
    [ , [ @thirdparty_flag = ] thirdparty_flag ]
    [ , [ @publisher_type = ] 'publisher_type' ]

Аргументы

  • [ @publisher=] 'publisher'
    Имя издателя. Аргумент publisher имеет тип sysname и не имеет значения по умолчанию.

  • [ @distribution_db=] 'distribution_db'
    Имя базы данных распространителя. Аргумент distributor_db имеет тип sysname и не имеет значения по умолчанию. Он используется агентами репликации для подключения к издателю.

  • [ @security_mode=] security_mode
    Реализованный режим обеспечения безопасности. Этот аргумент используется агентами репликации только для установления соединения с издателем для очереди обновляемых подписок или с издателем, не являющимся SQL Server. Аргумент security_mode имеет тип int и может принимать одно из следующих значений.

    Значение

    Описание

    0

    Агенты репликации на распространителе используют для подключения к издателю проверку подлинности SQL Server.

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

    Агенты репликации на распространителе используют для подключения к издателю проверку подлинности Windows.

  • [ @login=] 'login'
    Имя входа. Этот аргумент необходим, если аргумент security_mode имеет значение 0. Аргумент login имеет тип sysname и значение по умолчанию NULL. Он используется агентами репликации для подключения к издателю.

  • [ @password=] 'password']
    Пароль. Аргумент password имеет тип sysname и значение по умолчанию NULL. Он используется агентами репликации для подключения к издателю.

    Примечание по безопасностиПримечание по безопасности

    Не оставляйте поле пароля пустым. Используйте надежный пароль.

  • [ @working_directory=] 'working_directory'
    Имя рабочего каталога, служащего для хранения файлов данных и схем публикации. Аргумент working_directory имеет тип nvarchar(255) и соответствует по умолчанию папке ReplData текущего экземпляра SQL Server — например «C:\Program Files\Microsoft SQL Server\MSSQL\MSSQ.1\ReplData». Имя должно быть задано в формате UNC.

  • [ @trusted=] 'trusted'
    Этот аргумент устарел и поддерживается только для обеспечения обратной совместимости. Аргумент trusted имеет тип nvarchar(5) и может иметь только значение false; при любом другом значении возникнет ошибка.

  • [ @encrypted_password=] encrypted_password
    Аргумент encrypted_password больше не поддерживается. Попытка присвоить этому аргументу типа bit значение 1 приведет к ошибке.

  • [ @thirdparty_flag =] thirdparty_flag
    Этот аргумент показывает, является ли SQL Server издателем. Аргумент thirdparty_flag имеет тип bit и может принимать одно из следующих значений.

    Значение

    Описание

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

    База данных SQL Server.

    1

    База данных, отличная от базы данных SQL Server.

  • [ @publisher_type= ] 'publisher_type'
    Указывает тип издателя, если издатель не является SQL Server. Аргумент publisher_type имеет тип sysname и может принимать одно из следующих значений.

    Значение

    Описание

    MSSQLSERVER

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

    Издатель SQL Server.

    ORACLE

    Стандартный издатель Oracle.

    ORACLE GATEWAY

    Используется издатель Oracle Gateway.

    Дополнительные сведения о различиях между издателями Oracle и Oracle Gateway см. в разделе Настройка издателя Oracle.

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

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

Замечания

Хранимая процедура sp_adddistpublisher используется при репликации моментальных снимков, репликации транзакций и репликации слиянием.

Пример

-- 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_adddistpublisher могут выполнять только члены предопределенной роли сервера sysadmin.