sp_adddistributor (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Создает запись в таблице sys.servers (если нет одного), помечает запись сервера как распространитель и сохраняет сведения о свойствах. Эта хранимая процедура выполняется на распространителю в master базе данных, чтобы зарегистрировать и пометить сервер как распространитель. В случае удаленного распространителя он также выполняется на издателе из master базы данных для регистрации удаленного распространителя.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_adddistributor
    [ @distributor = ] N'distributor'
    [ , [ @heartbeat_interval = ] heartbeat_interval ]
    [ , [ @password = ] N'password' ]
    [ , [ @from_scripting = ] from_scripting ]
[ ; ]

Аргументы

[ @distributor = ] N'distributor'

Имя сервера распространителя. @distributor — sysname без значения по умолчанию. Этот аргумент используется только при настройке удаленного распространителя. Он добавляет записи для свойств распространителя в msdb..MSdistributor таблице.

Примечание.

Имя сервера можно указать как <Hostname>,<PortNumber> для экземпляра по умолчанию или <Hostname>\<InstanceName>,<PortNumber> для именованного экземпляра. Укажите номер порта для подключения при развертывании SQL Server в Linux или Windows с пользовательским портом, а служба браузера отключена. Использование пользовательских номеров портов для удаленного распространителя применяется к SQL Server 2019 (15.x) и более поздним версиям.

[ @heartbeat_interval = ] heartbeat_interval

Максимальное количество минут, в течение которых агент может выполняться без ведения журнала сообщений о процессе работы. @heartbeat_interval имеет значение int с значением 10 по умолчанию. Для проверки состояния запущенных агентов репликации создается задание агента SQL Server, выполняемое с заданным интервалом.

[ @password = ] N'password'

Пароль для входа distributor_admin . @password — sysname с значением по умолчаниюNULL. Если пароль имеет NULL или пустую строку, @password сбрасывается на случайное значение. Пароль должен быть настроен при добавлении первого удаленного распространителя. distributor_admin входа и @password хранятся для записи связанного сервера, используемой для подключения RPC распространителя, включая локальные подключения. Если распространитель является локальным, пароль для distributor_admin имеет новое значение. Для издателей с удаленным распространителем необходимо указать одинаковое значение для @password при выполнении sp_adddistributor на издателе и распространитее. sp_changedistributor_password можно использовать для изменения пароля распространителя.

Внимание

По возможности предлагайте пользователям вводить учетные данные системы безопасности во время выполнения приложения. В случае необходимости хранения учетных данных в файле скрипта этот файл следует защищать во избежание несанкционированного доступа.

[ @from_scripting = ] from_scripting

@from_scripting бит с значением по умолчанию0. Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

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

0 (успешно) или 1 (сбой).

Замечания

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

Примеры

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

Разрешения

Могут выполняться sp_adddistributorтолько члены предопределенных ролей сервера sysadmin.