sp_adddistpublisher (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Configure un serveur de publication pour qu'il utilise une base de données de distribution spécifique. Cette procédure stockée est exécutée sur le serveur de distribution sur n’importe quelle base de données. Les procédures stockées sp_adddistributor (Transact-SQL) et sp_adddistributiondb (Transact-SQL) doivent être exécutées avant d’utiliser cette procédure stockée.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_adddistpublisher
    [ @publisher = ] N'publisher'
    , [ @distribution_db = ] N'distribution_db'
    [ , [ @security_mode = ] security_mode ]
    [ , [ @login = ] N'login' ]
    [ , [ @password = ] N'password' ]
    [ , [ @working_directory = ] N'working_directory' ]
    [ , [ @trusted = ] N'trusted' ]
    [ , [ @encrypted_password = ] encrypted_password ]
    [ , [ @thirdparty_flag = ] thirdparty_flag ]
    [ , [ @publisher_type = ] N'publisher_type' ]
    [ , [ @storage_connection_string = ] N'storage_connection_string' ]
[ ; ]

Arguments

[ @publisher = ] N’publisher'

Nom du serveur de publication. @publisher est sysname, sans valeur par défaut.

Remarque

Le nom du serveur peut être spécifié en tant que <Hostname>,<PortNumber>. 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.

[ @distribution_db = ] N’distribution_db'

Nom de la base de données de distribution. @distribution_db est sysname, sans valeur par défaut. Il est utilisé par les agents de réplication pour se connecter au serveur de publication.

[ @security_mode = ] security_mode

Mode de sécurité implémenté. Ce paramètre est utilisé uniquement par les agents de réplication pour se connecter au serveur de publication pour les abonnements mis à jour en file d’attente ou avec un serveur de publication non-SQL Server. @security_mode est int et peut être l’une de ces valeurs.

Valeur Description
0 Les agents de réplication sur le serveur de distribution utilisent l’authentification SQL Server pour se connecter au serveur de publication.
1 (valeur par défaut) Les agents de réplication situés sur le serveur de distribution utilisent l'authentification Windows pour se connecter au serveur de publication.

[ @login = ] N’login'

Connexion. Ce paramètre est obligatoire si security_mode est 0. @login est sysname, avec la valeur par défaut NULL. Il est utilisé par les agents de réplication pour se connecter au serveur de publication.

[ @password = ] N’password'

Mot de passe. @password est sysname, avec la valeur par défaut NULL. Il est utilisé par les agents de réplication pour se connecter au serveur de publication.

Important

N’utilisez pas de mot de passe vide. Utilisez un mot de passe fort.

[ @working_directory = ] N’working_directory'

Nom du répertoire de travail utilisé pour stocker les données et les fichiers de schéma de la publication. @working_directory est nvarchar(255) et est défini par défaut sur le ReplData dossier de cette instance de SQL Server. Par exemple : C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.1\ReplData. Le nom doit être indiqué au format UNC.

Pour Azure SQL Database, utilisez \\<storage_account>.file.core.windows.net\<share>.

[ @trusted = ] N’trusted'

@trusted est déconseillée et est fournie uniquement pour la compatibilité descendante. @trusted est nvarchar(5), avec la valeur par défaut false. La définition de ce paramètre sur n’importe quoi, mais false entraîne une erreur.

[ @encrypted_password = ] encrypted_password

La définition de ce paramètre n’est plus prise en charge. @encrypted_password est bit, avec la valeur par défaut 0. La définition de ce paramètre pour 1 entraîner une erreur.

[ @thirdparty_flag = ] thirdparty_flag

Spécifie quand le serveur de publication est SQL Server. @thirdparty_flag est bit et peut être l’une des valeurs suivantes.

Valeur Description
0 (valeur par défaut) Base de données SQL Server.
1 Base de données autre que SQL Server.

[ @publisher_type = ] N’publisher_type'

Spécifie le type de serveur de publication lorsque le serveur de publication n’est pas SQL Server. @publisher_type est sysname et peut être l’une des valeurs suivantes.

Valeur Description
MSSQLSERVER (valeur par défaut) Spécifie un serveur de publication SQL Server.
ORACLE Spécifie un serveur de publication Oracle standard.
ORACLE GATEWAY Spécifie un serveur de publication Oracle Gateway.

Pour plus d’informations sur les différences entre un serveur de publication Oracle et un serveur de publication Oracle Gateway, consultez Configurer un serveur de publication Oracle.

[ @storage_connection_string = ] N’storage_connection_string'

Obligatoire pour Azure SQL Database. @storage_connection_string est nvarchar(255), avec la valeur par défaut NULL. Utilisez la clé d’accès à partir du Portail Azure, sous Stockage Paramètres>.

Remarque

Les bases de données de serveur de publication et de serveur de distribution sur Azure SQL Database nécessitent SQL Managed Instance. Pour plus d’informations, consultez Réplication avec Azure SQL Database.

Valeurs des codes de retour

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

Notes

sp_adddistpublisherest utilisé par la réplication instantané, 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_adddistpublisher