Partager via


sp_adddistributor (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Crée une entrée dans la table sys.servers (s’il n’en existe pas), marque l’entrée du serveur en tant que serveur de distribution et stocke les informations de propriété. Cette procédure stockée est exécutée sur le serveur de distribution sur la master base de données pour inscrire et marquer le serveur en tant que serveur de distribution. Dans le cas d’un serveur de distribution distant, il est également exécuté sur le serveur de publication à partir de la master base de données pour inscrire le serveur de distribution distant.

Conventions de la syntaxe Transact-SQL

Syntaxe

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' ]
[ ; ]

Arguments

[ @distributor = ] N’distributor'

Nom du serveur de distribution. @distributor est sysname, sans valeur par défaut. Ce paramètre est uniquement utilisé lors de la configuration d'un serveur de distribution distant. Il ajoute des entrées pour les propriétés du serveur de distribution dans la msdb..MSdistributor table.

Remarque

Le nom du serveur peut être spécifié comme <Hostname>,<PortNumber> pour une instance par défaut ou <Hostname>\<InstanceName>,<PortNumber> pour une instance nommée. Spécifiez le numéro de port de votre connexion lorsque SQL Server est déployé sur Linux ou Windows avec un port personnalisé et que le service de navigateur est désactivé. L’utilisation de numéros de port personnalisés pour le serveur de distribution distant s’applique à SQL Server 2019 (15.x) et versions ultérieures.

[ @heartbeat_interval = ] heartbeat_interval

Nombre maximal de minutes pendant lesquelles un Agent peut ne pas consigner de message de progression. @heartbeat_interval est int, avec une valeur par défaut de 10 minutes. Un travail de l'Agent SQL Server est créé et s'exécute pendant cet intervalle de temps pour contrôler l'état des agents de réplication en cours d'exécution.

[ @password = ] N’password'

Mot de passe de la connexion distributor_admin . @password est sysname, avec la valeur par défaut NULL. Si le mot de passe est NULL ou une chaîne vide, @password est réinitialisé à une valeur aléatoire. Le mot de passe doit être configuré lors de l'ajout du premier serveur de distribution distant. distributor_admin connexion et @password sont stockés pour l’entrée de serveur lié utilisée pour une connexion RPC de serveur de distribution, y compris les connexions locales. Si le serveur de distribution est local, le mot de passe de distributor_admin est défini sur une nouvelle valeur. Pour les serveurs de publication avec un serveur de distribution distant, la même valeur pour @password doit être spécifiée lors de l’exécution sp_adddistributor sur le serveur de publication et le serveur de distribution. sp_changedistributor_password pouvez être utilisé pour modifier le mot de passe du serveur de distribution.

Important

Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution. Si vous devez enregistrer les informations d'identification dans un fichier de script, vous devez sécuriser le fichier pour empêcher un accès non autorisé.

[ @from_scripting = ] from_scripting

@from_scripting est bit, avec la valeur par défaut 0. Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @encrypt_distributor_connection = ] N’encrypt_distributor_connection'

S’applique à : SQL Server 2025 (17.x) et versions ultérieures.

Détermine si la connexion interne du serveur lié du serveur de publication au serveur de distribution est chiffrée. Les valeurs sont mappées à la propriété du Encrypt fournisseur OLE DB. @encrypt_distributor_connectionest nvarchar(10) et ne peut pas être NULL.

@encrypt_distributor_connection peut être l’une des valeurs suivantes :

  • mandatory (par défaut avec le fournisseur Microsoft OLE DB 19)
  • no ou false (par défaut avec le fournisseur Microsoft OLE DB 18)
  • true ou yes
  • optional
  • strict

[ @trust_distributor_certificate = ] N’trust_distributor_certificate'

S’applique à : SQL Server 2025 (17.x) et versions ultérieures.

Indique si le certificat TLS du serveur de distribution doit être approuvé sans validation. La valeur est mappée à la propriété du TrustServerCertificate fournisseur OLE DB et est généralement utilisée conjointement avec le paramètre de chiffrement lors de l’utilisation Mandatory de certificats auto-signés. @trust_distributor_certificateest nvarchar(5) et ne peut pas être NULL.

@trust_distributor_certificate peut être l’une des valeurs suivantes :

  • no (valeur par défaut)
  • yes

Remarque

Les valeurs par défaut sécurisées se rapportent au fournisseur OLEDB sous-jacent 19, ce qui améliore la sécurité. L’option de remplacement de la valeur par défaut est moins sécurisée que la configuration de votre instance pour utiliser un certificat approuvé. Après avoir remplacé la valeur par défaut, vous avez la possibilité de configurer SQL Server pour utiliser un certificat, puis d’utiliser la procédure stockée sp_changedistributor_property pour définir la trust_distributor_certificate=no propriété sur la valeur par défaut sécurisée.

[ @host_name_in_distributor_certificate = ] N’host_name_in_distributor_certificate'

S’applique à : SQL Server 2025 (17.x) et versions ultérieures.

Spécifie le nom d’hôte du certificat du serveur de distribution, lorsqu’il est différent du nom du serveur de distribution, par exemple lorsque l’adresse IP ou l’alias DNS est utilisé comme nom du serveur de distribution. Laissez le paramètre @host_name_in_distributor_certificate vide si le nom d’hôte dans le certificat correspond au nom du serveur de distribution. @host_name_in_distributor_certificate est nvarchar(255) de n’importe quelle valeur de chaîne, avec une valeur par défaut NULL.

Valeurs des codes de retour

0 (réussite) or 1 (échec).

Notes

sp_adddistributor est utilisé dans la réplication d’instantanés, la réplication transactionnelle et la réplication de fusion.

Exemples

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

Configurer le serveur de distribution pour approuver le certificat auto-signé

Pour remplacer la valeur par défaut sécurisée du fournisseur OLEDB 19 et définir trust_distributor_certificate=yes afin que le serveur de distribution approuve le certificat auto-signé, utilisez l’exemple suivant :

EXECUTE sys.sp_adddistributor @trust_distributor_certificate = 'yes';

Remarque

Les valeurs par défaut sécurisées se rapportent au fournisseur OLEDB sous-jacent 19, ce qui améliore la sécurité. L’option de remplacement de la valeur par défaut est moins sécurisée que la configuration de votre instance pour utiliser un certificat approuvé. Après avoir remplacé la valeur par défaut, vous avez la possibilité de configurer SQL Server pour utiliser un certificat, puis d’utiliser la procédure stockée sp_changedistributor_property pour définir la trust_distributor_certificate=no propriété sur la valeur par défaut sécurisée.

Pour plus d’informations, consultez le changement de réaction du distributeur distant dans SQL Server 2025.

autorisations

Seuls les membres du rôle serveur fixe sysadmin peuvent s’exécuter.sp_adddistributor