Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Область применения: 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 optionalstrict
[ @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_certificate — nvarchar(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.