Partage via


sp_adddistributor (Transact-SQL)

S’applique à : SQL Server Azure 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 ]
[ ; ]

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.

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

autorisations

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