sp_adddistributiondb (Transact-SQL)sp_adddistributiondb (Transact-SQL)

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database (Managed Instance uniquement) nonAzure SQL Data Warehouse nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure SQL Data Warehouse noParallel Data Warehouse

Crée une nouvelle base de données de distribution et installe le schéma du serveur de distribution.Creates a new distribution database and installs the Distributor schema. La base de données de distribution stocke les procédures, le schéma et les métadonnées utilisés dans la réplication.The distribution database stores procedures, schema, and metadata used in replication. Cette procédure stockée est exécutée sur la base de données master du serveur de distribution afin de créer la base de données de distribution et d'installer les tables et les procédures stockées nécessaires à la distribution de la réplication.This stored procedure is executed at the Distributor on the master database in order to create the distribution database, and install the necessary tables and stored procedures required to enable the replication distribution.

Icône de lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

  
sp_adddistributiondb [ @database= ] 'database'   
    [ , [ @data_folder= ] 'data_folder' ]   
    [ , [ @data_file= ] 'data_file' ]   
    [ , [ @data_file_size= ] data_file_size ]   
    [ , [ @log_folder= ] 'log_folder' ]   
    [ , [ @log_file= ] 'log_file' ]   
    [ , [ @log_file_size= ] log_file_size ]   
    [ , [ @min_distretention= ] min_distretention ]   
    [ , [ @max_distretention= ] max_distretention ]   
    [ , [ @history_retention= ] history_retention ]   
    [ , [ @security_mode= ] security_mode ]   
    [ , [ @login= ] 'login' ]   
    [ , [ @password= ] 'password' ]   
    [ , [ @createmode= ] createmode ]  
    [ , [ @from_scripting = ] from_scripting ] 
    [ , [ @deletebatchsize_xact = ] deletebatchsize_xact ] 
    [ , [ @deletebatchsize_cmd = ] deletebatchsize_cmd ] 

ArgumentsArguments

[ @database = ] database'Nom de la base de données de distribution à créer.[ @database = ] database' Is the name of the distribution database to be created. Database est de type sysname, sans valeur par défaut.database is sysname, with no default. Si la base de données spécifiée existe déjà et n'est pas déjà marquée comme base de données de distribution, les objets nécessaires à l'activation de la distribution sont installés ; la base de données est également marquée comme base de données de distribution.If the specified database already exists and is not already marked as a distribution database, then the objects needed to enable distribution are installed and the database is marked as a distribution database. Si la base de données spécifiée est déjà activée comme base de données de distribution, une erreur est renvoyée.If the specified database is already enabled as a distribution database, an error is returned.

[ @data_folder = ] 'data_folder'_Nom du répertoire utilisé pour stocker le fichier de données de la base de données de distribution.[ @data_folder = ] 'data_folder'_ Is the name of the directory used to store the distribution database data file. DATA_FOLDER est de type nvarchar (255) , avec NULL comme valeur par défaut.data_folder is nvarchar(255), with a default of NULL. Si sa valeur est NULL, le répertoire de données de cette instance de MicrosoftMicrosoft SQL ServerSQL Server est utilisé, par exemple C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data.If NULL, the data directory for that instance of MicrosoftMicrosoft SQL ServerSQL Server is used, for example, C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data.

[ @data_file = ] 'data_file'Nom du fichier de base de données.[ @data_file = ] 'data_file' Is the name of the database file. data_file est de type nvarchar (255) , avec une valeur par défaut de base de données.data_file is nvarchar(255), with a default of database. Si la valeur est NULL, la procédure stockée crée un nom de fichier en utilisant le nom de la base de données.If NULL, the stored procedure constructs a file name using the database name.

[ @data_file_size = ] data_file_sizeTaille initiale du fichier de données en mégaoctets (Mo).[ @data_file_size = ] data_file_size Is the initial data file size in megabytes (MB). data_file_size is int, avec une valeur par défaut de 5 Mo.data_file_size is int, with a default of 5MB.

[ @log_folder = ] 'log_folder'Nom du répertoire du fichier journal de la base de données.[ @log_folder = ] 'log_folder' Is the name of the directory for the database log file. log_folder est de type nvarchar (255) , avec NULL comme valeur par défaut.log_folder is nvarchar(255), with a default of NULL. Si sa valeur est NULL, le répertoire de données de cette instance de SQL ServerSQL Server est utilisé, par exemple C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data.If NULL, the data directory for that instance of SQL ServerSQL Server is used (for example, C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data).

[ @log_file = ] 'log_file'Nom du fichier journal.[ @log_file = ] 'log_file' Is the name of the log file. fichier_journal est de type nvarchar (255) , avec NULL comme valeur par défaut.log_file is nvarchar(255), with a default of NULL. Si la valeur est NULL, la procédure stockée crée un nom de fichier en utilisant le nom de la base de données.If NULL, the stored procedure constructs a file name using the database name.

[ @log_file_size = ] log_file_sizeTaille initiale du fichier journal en mégaoctets (Mo).[ @log_file_size = ] log_file_size Is the initial log file size in megabytes (MB). log_file_size est de type int, avec 0 Mo comme valeur par défaut, ce qui signifie que la taille du fichier est créée à l’aide SQL ServerSQL Serverde la plus petite taille de fichier journal autorisée par.log_file_size is int, with a default of 0 MB, which means the file size is created using the smallest log file size allowed by SQL ServerSQL Server.

[ @min_distretention = ] min_distretentionPériode de rétention minimale, en heures, avant la suppression des transactions de la base de données de distribution.[ @min_distretention = ] min_distretention Is the minimum retention period, in hours, before transactions are deleted from the distribution database. min_distretention est de type int, avec 0 heure comme valeur par défaut.min_distretention is int, with a default of 0 hours.

[ @max_distretention = ] max_distretentionPériode de rétention maximale, en heures, avant la suppression des transactions.[ @max_distretention = ] max_distretention Is the maximum retention period, in hours, before transactions are deleted. max_distretention est de type int, avec une valeur par défaut de 72 heures.max_distretention is int, with a default of 72 hours. Les abonnements qui n'ont pas reçu de commandes répliquées plus anciennes que la période de rétention maximale de la distribution sont marqués comme inactifs et doivent être réinitialisés.Subscriptions that have not received replicated commands that are older than the maximum distribution retention period are marked as inactive and need to be reinitialized. Une instruction RAISERROR 21011 est émise pour chaque abonnement inactif.RAISERROR 21011 is issued for each inactive subscription. La valeur 0 signifie que les transactions répliquées ne sont pas stockées dans la base de données de distribution.A value of 0 means that replicated transactions are not stored in the distribution database.

[ @history_retention = ] history_retentionNombre d’heures de conservation de l’historique.[ @history_retention = ] history_retention Is the number of hours to retain history. history_retention est de type int, avec une valeur par défaut de 48 heures.history_retention is int, with a default of 48 hours.

[ @security_mode = ] security_modeMode de sécurité à utiliser lors de la connexion au serveur de distribution.[ @security_mode = ] security_mode Is the security mode to use when connecting to the Distributor. security_mode est de type int, avec 1 comme valeur par défaut.security_mode is int, with a default of 1. 0 spécifie SQL ServerSQL Server l’authentification; 1 spécifie l’authentification intégrée de Windows.0 specifies SQL ServerSQL Server Authentication; 1 specifies Windows Integrated Authentication.

[ @login = ] 'login'Nom de connexion utilisé lors de la connexion au serveur de distribution pour créer la base de données de distribution.[ @login = ] 'login' Is the login name used when connecting to the Distributor to create the distribution database. Cette valeur est obligatoire si security_mode a la valeur 0.This is required if security_mode is set to 0. login est de type sysname, avec NULL comme valeur par défaut.login is sysname, with a default of NULL.

[ @password = ] 'password'Mot de passe utilisé lors de la connexion au serveur de distribution.[ @password = ] 'password' Is the password used when connecting to the Distributor. Cette valeur est obligatoire si security_mode a la valeur 0.This is required if security_mode is set to 0. Password est de type sysname, avec NULL comme valeur par défaut.password is sysname, with a default of NULL.

[ @createmode = ] createmodecreatemode est de type int, avec 1 comme valeur par défaut et peut prendre l’une des valeurs suivantes.[ @createmode = ] createmode createmode is int, with a default of 1, and can be one of the following values.

ValueValue DescriptionDescription
00 Identifié à titre d'information uniquement.Identified for informational purposes only. Non pris en charge.Not supported. La compatibilité future n'est pas garantie.Future compatibility is not guaranteed.
1 (par défaut)1 (default) Créez la base de données ou utilisez une base de données existante, puis appliquez le fichier instdist. SQL pour créer des objets de réplication dans la base de données de distribution.CREATE DATABASE or use existing database and then apply instdist.sql file to create replication objects in the distribution database.
22 Identifié à titre d'information uniquement.Identified for informational purposes only. Non pris en charge.Not supported. La compatibilité future n'est pas garantie.Future compatibility is not guaranteed.

[ @from_scripting = ] from_scripting Identifié à titre d'information uniquement.Identified for informational purposes only. Non pris en charge.Not supported. La compatibilité future n'est pas garantie.Future compatibility is not guaranteed.[ @from_scripting = ] from_scripting Identifié à titre d'information uniquement.Identified for informational purposes only. Non pris en charge.Not supported. La compatibilité future n'est pas garantie.Future compatibility is not guaranteed.

[ @deletebatchsize_xact = ] deletebatchsize_xactSpécifie la taille de lot à utiliser lors du nettoyage des transactions expirées à partir des tables MSRepl_Transactions.[ @deletebatchsize_xact = ] deletebatchsize_xact Specifies the batch size to be used during cleanup of expired transactions from the MSRepl_Transactions tables. deletebatchsize_xact est de type int, avec 5000 comme valeur par défaut.deletebatchsize_xact is int, with a default of 5000. Ce paramètre a été introduit pour la première fois dans SQL Server 2017, suivi des versions de SQL Server 2012 SP4 et SQL Server 2016 SP2.This parameter was first introduced in SQL Server 2017, followed by releases in SQL Server 2012 SP4 and SQL Server 2016 SP2.

[ @deletebatchsize_cmd = ] deletebatchsize_cmdSpécifie la taille de lot à utiliser lors du nettoyage des commandes expirées à partir des tables MSRepl_Commands.[ @deletebatchsize_cmd = ] deletebatchsize_cmd Specifies the batch size to be used during cleanup of expired commands from the MSRepl_Commands tables. deletebatchsize_cmd est de type int, avec 2000 comme valeur par défaut.deletebatchsize_cmd is int, with a default of 2000. Ce paramètre a été introduit pour la première fois dans SQL Server 2017, suivi des versions de SQL Server 2012 SP4 et SQL Server 2016 SP2.This parameter was first introduced in SQL Server 2017, followed by releases in SQL Server 2012 SP4 and SQL Server 2016 SP2.

Valeurs des codes de retourReturn Code Values

0 (réussite) ou 1 (échec)0 (success) or 1 (failure)

NotesRemarks

sp_adddistributiondb est utilisé dans tous les types de réplications.sp_adddistributiondb is used in all types of replication. Toutefois, cette procédure stockée s'exécute uniquement sur un serveur de distribution.However, this stored procedure only runs at a distributor.

Vous devez configurer le serveur de distribution en exécutant sp_adddistributor avant d’exécuter sp_adddistributiondb.You must configure the distributor by executing sp_adddistributor before executing sp_adddistributiondb.

Exécutez sp_adddistributor avant d’exécuter sp_adddistributiondb.Run sp_adddistributor prior to running sp_adddistributiondb.

ExempleExample

-- 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'AdventureWorks2012';   
  
-- 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 AdventureWorks2012 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  
  

AutorisationsPermissions

Seuls les membres du rôle serveur fixe sysadmin peuvent exécuter sp_adddistributiondb.Only members of the sysadmin fixed server role can execute sp_adddistributiondb.

Voir aussiSee Also

Configurer la publication et la distribution Configure Publishing and Distribution
sp_changedistributiondb (Transact-SQL) sp_changedistributiondb (Transact-SQL)
sp_dropdistributiondb (Transact-SQL) sp_dropdistributiondb (Transact-SQL)
sp_helpdistributiondb (Transact-SQL) sp_helpdistributiondb (Transact-SQL)
Procédures stockées système (Transact-SQL) System Stored Procedures (Transact-SQL)
Configurer la distributionConfigure Distribution