sp_adddistributiondb (Transact-SQL)

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

Icône Lien de rubriqueConventions de la syntaxe Transact-SQL

Syntaxe

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 ]

Arguments

  • [ @database=] database'
    Nom de la base de données de distribution à créer. database est de type sysname et n'a pas de 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 ; la base de données est également 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=] **'**data_folder'
    Nom du répertoire dans lequel est stocké le fichier de données de la base de données de distribution. L'argument data_folder est de type nvarchar(255) ; il a la valeur NULL par défaut. Si sa valeur est NULL, le répertoire de données de cette instance de Microsoft SQL Server est utilisé, par exemple C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data.

  • [ @data_file=] 'data_file'
    Nom du fichier de base de données. data_file est de type nvarchar(255) et sa valeur par défaut est database. Si sa valeur est NULL, la procédure stockée crée un nom de fichier en utilisant le nom de la base de données.

  • [ @data_file_size=] data_file_size
    Taille initiale du fichier de données exprimée en mégaoctets (Mo). L'argument data_file_size i est de type int ; sa valeur par défaut est 5 Mo.

  • [ @log_folder=] 'log_folder'
    Nom du répertoire du répertoire du fichier journal de la base de données. L'argument log_folder est de type nvarchar(255) ; sa valeur par défaut est NULL. Si sa valeur est NULL, le répertoire de données de cette instance de SQL Server est utilisé, par exemple C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Data.

  • [ @log_file=] 'log_file'
    Nom du fichier journal. L'argument log_file est de type nvarchar(255), avec NULL comme valeur par défaut. 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.

  • [ @log_file_size=] log_file_size
    Taille initiale du fichier journal exprimée en mégaoctets (Mo). L'argument log_file_size est de type int ; sa valeur par défaut est 0 Mo, ce qui signifie que la taille du fichier est créée à partir de la plus petite taille de fichier journal autorisée par SQL Server.

  • [ @min_distretention=] min_distretention
    Durée de conservation minimale (en heures) avant la suppression des transactions de la base de données de distribution. L'argument min_distretention est de type int ; sa valeur par défaut est 0.

  • [ @max_distretention=] max_distretention
    Durée de rétention maximale (en heures) avant la suppression des transactions. L'argument max_distretention est de type int ; sa valeur par défaut est 72. 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. Une instruction RAISERROR 21011 est émise pour chaque abonnement inactif. La valeur 0 signifie que les transactions répliquées ne sont pas conservées dans la base de données.

  • [ @history_retention=] history_retention
    Durée de rétention de l'historique (en nombre d'heures). history_retention est de type int, avec 48 comme valeur par défaut.

  • [ @security_mode=] security_mode
    Mode de sécurité à utiliser lors de la connexion à un serveur de distribution. security_mode est de type int, avec 1 comme valeur par défaut. 0 spécifie l'authentification SQL Server ; 1 spécifie l'authentification intégrée de Windows.

  • [ @login=] 'login'
    Nom de connexion utilisé lors de la connexion au serveur de distribution pour créer la base de données de distribution. Ce paramètre est requis si security_mode a la valeur 0. login est de type sysname, avec NULL comme valeur par défaut.

  • [ @password=] 'password'
    Mot de passe utilisé lors de la connexion au serveur de distribution. Ce paramètre est requis si security_mode a la valeur 0. password est de type sysname, avec NULL comme valeur par défaut.

  • [ @createmode=] createmode
    L'argument createmode est de type int, a 1 comme valeur par défaut, et peut prendre 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 (valeur par défaut)

    Création d'une base de données (CREATE DATABASE) ou utilisation d'une base de données existante, puis application du fichier instdist.sql pour créer les 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.

Valeurs des codes renvoyés

0 (succès) ou 1 (échec)

Notes

La procédure sp_adddistributiondb est utilisée dans tous les types de réplications. 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 sp_adddistributiondb.

Exécutez sp_adddistributor avant sp_adddistributiondb.

Exemple

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

-- 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 AdventureWorks2008R2 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 exécuter sp_adddistributiondb.