sp_adddistributiondb (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Crée une nouvelle base de données de distribution et installe le schéma du serveur de distribution. 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. Cette procédure stockée est exécutée sur le serveur de distribution sur la master base de données pour créer la base de données de distribution et installer les tables et procédures stockées nécessaires pour activer la distribution de réplication.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_adddistributiondb
    [ @database = ] N'database'
    [ , [ @data_folder = ] N'data_folder' ]
    [ , [ @data_file = ] N'data_file' ]
    [ , [ @data_file_size = ] data_file_size ]
    [ , [ @log_folder = ] N'log_folder' ]
    [ , [ @log_file = ] N'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 = ] N'login' ]
    [ , [ @password = ] N'password' ]
    [ , [ @createmode = ] createmode ]
    [ , [ @from_scripting = ] from_scripting ]
    [ , [ @deletebatchsize_xact = ] deletebatchsize_xact ]
    [ , [ @deletebatchsize_cmd = ] deletebatchsize_cmd ]
[ ; ]

Arguments

[ @database = ] N’database'

Nom de la base de données de distribution à créer. @database est sysname, sans valeur par défaut. 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 et la base de données est marquée comme base de données de distribution. 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.

[ @data_folder = ] N’data_folder'

Nom du répertoire utilisé pour stocker le fichier de données de base de données de distribution. @data_folder est nvarchar(255), avec la valeur par défaut NULL. Si NULL, le répertoire de données de cette instance de SQL Server est utilisé, par exemple C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data.

[ @data_file = ] N’data_file'

Nom du fichier de base de données. @data_file est nvarchar(255), avec la valeur par défaut NULL. Si NULL, la procédure stockée construit un nom de fichier à l’aide du nom de la base de données.

[ @data_file_size = ] data_file_size

Taille initiale du fichier de données en mégaoctets (Mo). @data_file_size est int, avec une valeur par défaut de 5, qui est de 5 Mo.

[ @log_folder = ] N’log_folder'

Nom du répertoire du fichier journal de base de données. @log_folder est nvarchar(255), avec la valeur par défaut NULL. Si NULL, le répertoire de données de cette instance de SQL Server est utilisé (par exemple). C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data

[ @log_file = ] N’log_file'

Nom du fichier journal. @log_file est nvarchar(255), avec la valeur par défaut NULL. Si NULL, la procédure stockée construit un nom de fichier à l’aide du nom de la base de données.

[ @log_file_size = ] log_file_size

Taille initiale du fichier journal en mégaoctets (Mo). @log_file_size est int, avec une valeur par défaut , 0qui crée le fichier à l’aide de la plus petite taille de fichier journal autorisée par le Moteur de base de données.

[ @min_distretention = ] min_distretention

Période de rétention minimale, en heures, avant la suppression des transactions de la base de données de distribution. @min_distretention est int, avec la valeur par défaut 0.

[ @max_distretention = ] max_distretention

Délai de rétention maximal en heures, avant la suppression des transactions. @max_distretention est int, avec la valeur par défaut 72. Les abonnements qui n’ont pas reçu de commandes répliquées et qui sont antérieurs à la période de rétention de distribution maximale, sont marqués comme inactifs et doivent être réinitialisés. Le numéro d’erreur 21011 est émis pour chaque abonnement inactif. Valeur de 0 signifie que les transactions répliquées ne sont pas stockées dans la base de données de distribution.

[ @history_retention = ] history_retention

Nombre d’heures pour conserver l’historique. @history_retention est int, avec une valeur par défaut de 48, ce qui signifie deux jours.

[ @security_mode = ] security_mode

Mode de sécurité à utiliser lors de la connexion au serveur de distribution. @security_mode est int, avec la valeur par défaut 1.

  • 0 spécifie l’authentification SQL Server
  • 1spécifie Authentification Windows

[ @login = ] N’login'

Nom de connexion utilisé lors de la connexion au serveur de distribution pour créer la base de données de distribution. @login est sysname, avec la valeur par défaut NULL. @login est nécessaire si @security_mode a la valeur 0.

[ @password = ] N’password'

Mot de passe utilisé lors de la connexion au serveur de distribution. @password est sysname, avec la valeur par défaut NULL. @password est obligatoire si @security_mode a la valeur 0.

[ @createmode = ] createmode

@createmode est int et peut être l’une des valeurs suivantes.

Valeur Description
0 Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.
1 (par défaut) CREATE DATABASE ou utilisez une base de données existante, puis appliquez le instdist.sql fichier pour créer des objets de réplication dans la base de données de distribution.
2 Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @from_scripting = ] from_scripting

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @deletebatchsize_xact = ] deletebatchsize_xact

Spécifie la taille du lot à utiliser pendant propre up des transactions expirées à partir des MSRepl_Transactions tables. @deletebatchsize_xact est int, avec la valeur par défaut 5000.

S’applique à : SQL Server 2012 (11.x) avec Service Pack 4, SQL Server 2016 (13.x) avec Service Pack 2, SQL Server 2017 (14.x) et versions ultérieures.

[ @deletebatchsize_cmd = ] deletebatchsize_cmd

Spécifie la taille du lot à utiliser pendant propre up des commandes expirées des MSRepl_Commands tables. @deletebatchsize_cmd est int, avec la valeur par défaut 2000.

S’applique à : SQL Server 2012 (11.x) avec Service Pack 4, SQL Server 2016 (13.x) avec Service Pack 2, SQL Server 2017 (14.x) et versions ultérieures.

Valeurs des codes de retour

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

Notes

sp_adddistributiondb est utilisé dans tous les types de réplication. Toutefois, cette procédure stockée s'exécute uniquement sur un serveur de distribution.

Vous devez configurer le serveur de distribution en exécutant sp_adddistributor avant d’exécuter sp_adddistributiondb.

Exécuter sp_adddistributor avant l’exécution sp_adddistributiondb.

Exemples

Ce script utilise des variables de script SQLCMD et doit s’exécuter en mode SQLCMD. Les variables sont sous la forme $(MyVariable). Pour plus d’informations sur l’utilisation de variables de script sur la ligne de commande et dans SQL Server Management Studio, consultez l’exécution de scripts de réplication.

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_adddistributiondb