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


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 ]
    [ , [ @encrypt_distributor_connection = ] N'encrypt_distributor_connection' ]
    [ , [ @trust_distributor_certificate = ] N'trust_distributor_certificate' ]
    [ , [ @host_name_in_distributor_certificate = ] N'host_name_in_distributor_certificate' ]
[ ; ]

Аргументы

[ @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. Указано только в ознакомительных целях. Не поддерживается. Совместимость с будущими версиями не гарантируется.

[ @encrypt_distributor_connection = ] N'encrypt_distributor_connection'

Применимо к: SQL Server 2025 (17.x) и более поздних версий.

Определяет, шифруется ли подключение внутреннего связанного сервера от издателя к распространителю. Значения сопоставляются со свойством поставщика Encrypt OLE DB. @encrypt_distributor_connection является nvarchar(10) и не может быть NULL.

@encrypt_distributor_connection может быть одним из следующих значений:

  • mandatory (по умолчанию с поставщиком Microsoft OLE DB 19)
  • no или false (по умолчанию с поставщиком Microsoft OLE DB 18)
  • true или yes
  • optional
  • strict

[ @trust_distributor_certificate = ] N'trust_distributor_certificate'

Применимо к: SQL Server 2025 (17.x) и более поздних версий.

Указывает, должен ли сертификат TLS распространителя быть доверенным без проверки. Значение сопоставляется со свойством поставщика TrustServerCertificate OLE DB и обычно используется вместе с Mandatory параметром шифрования при использовании самозаверяющего сертификата. @trust_distributor_certificate является nvarchar(5), и не может быть NULL.

@trust_distributor_certificate может быть одним из следующих значений:

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

Примечание.

Безопасные значения по умолчанию относятся к базовому поставщику OLEDB 19, что повышает безопасность. Параметр переопределения по умолчанию является менее безопасным, чем настройка экземпляра для использования доверенного сертификата. После переопределения по умолчанию у вас есть возможность настроить SQL Server для использования сертификата, а затем использовать хранимую процедуру sp_changedistributor_property для возврата trust_distributor_certificate=no свойства в безопасное значение по умолчанию.

[ @host_name_in_distributor_certificate = ] N'host_name_in_distributor_certificate'

Применимо к: SQL Server 2025 (17.x) и более поздних версий.

Указывает имя узла из сертификата распространителя, если оно отличается от имени распространителя, например, если IP-адрес или псевдоним DNS используется в качестве имени распространителя. Оставьте параметр @host_name_in_distributor_certificate пустым, если имя узла в сертификате соответствует имени распространителя. @host_name_in_distributor_certificatenvarchar(255) любого строкового значения с значением по умолчанию NULL.

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

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

Настройка распространителя для доверия самозаверяющего сертификата

Чтобы переопределить безопасный по умолчанию поставщик OLEDB 19 и установить trust_distributor_certificate=yes , чтобы распространитель доверял самозаверяющий сертификат, используйте следующий пример:

EXECUTE sys.sp_adddistributor @trust_distributor_certificate = 'yes';

Примечание.

Безопасные значения по умолчанию относятся к базовому поставщику OLEDB 19, что повышает безопасность. Параметр переопределения по умолчанию является менее безопасным, чем настройка экземпляра для использования доверенного сертификата. После переопределения по умолчанию у вас есть возможность настроить SQL Server для использования сертификата, а затем использовать хранимую процедуру sp_changedistributor_property для возврата trust_distributor_certificate=no свойства в безопасное значение по умолчанию.

Для получения дополнительной информации ознакомьтесь с удалённым дистрибьютором, который стал решающим изменением в SQL Server 2025.

Разрешения

Могут выполняться только члены sp_adddistributor.