sp_adddistributiondb (Transact-SQL)

Erstellt eine neue Verteilungsdatenbank und installiert das Verteilerschema. Die Verteilungsdatenbank speichert Prozeduren, Schemas und Metadaten, die bei der Replikation verwendet werden. Diese gespeicherte Prozedur wird auf dem Verteiler für die master-Datenbank ausgeführt, um die Verteilungsdatenbank zu erstellen und um die erforderlichen Tabellen und gespeicherten Prozeduren zu installieren, die für die Aktivierung der Replikationsverteilung erforderlich sind.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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 ]

Argumente

  • [ @database=] database'
    Der Name der zu erstellenden Verteilungsdatenbank. database ist ein Wert vom Datentyp sysname und weist keinen Standardwert auf. Wenn die angegebene Datenbank bereits vorhanden und noch nicht als Verteilungsdatenbank gekennzeichnet ist, werden die zum Aktivieren der Verteilung erforderlichen Objekte installiert, und die Datenbank wird als Verteilungsdatenbank gekennzeichnet. Wenn die angegebene Datenbank bereits als Verteilungsdatenbank aktiviert wurde, wird ein Fehler zurückgegeben.

  • [ @data_folder=] **'**data_folder'
    Der Name des Verzeichnisses, in dem die Datendatei der Verteilungsdatenbank gespeichert wird. data_folder ist vom Datentyp nvarchar(255) mit einem Standardwert von NULL. Bei NULL wird das Datenverzeichnis für diese Instanz von MicrosoftSQL Server verwendet (z. B. C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data).

  • [ @data_file=] 'data_file'
    Der Name der Datenbankdatei. data_file ist vom Datentyp nvarchar(255) und hat den Standardwert database. Bei NULL erstellt die gespeicherte Prozedur einen Dateinamen mithilfe des Datenbanknamens.

  • [ @data_file_size=] data_file_size
    Die Ausgangsgröße der Datendatei in Megabyte (MB). data_file_size i ist vom Datentyp int und hat den Standardwert 5 MB.

  • [ @log_folder=] 'log_folder'
    Der Name des Verzeichnisses für die Datenbank-Protokolldatei. log_folder ist vom Datentyp nvarchar(255); der Standardwert ist NULL. Bei NULL wird das Datenverzeichnis für diese Instanz von SQL Server verwendet (z. B. C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data).

  • [ @log_file=] 'log_file'
    Der Name der Protokolldatei. log_file ist vom Datentyp nvarchar(255) und hat den Standardwert NULL. Bei NULL erstellt die gespeicherte Prozedur einen Dateinamen mithilfe des Datenbanknamens.

  • [ @log_file_size=] log_file_size
    Die Ausgangsgröße der Protokolldatei in Megabyte (MB). log_file_size ist vom Datentyp int; der Standardwert ist 0 MB. Dies bedeutet, dass die Dateigröße als die kleinste Protokolldateigröße erstellt wird, die für SQL Server zulässig ist.

  • [ @min_distretention=] min_distretention
    Die Mindestbeibehaltungsdauer in Stunden, nach der Transaktionen aus der Verteilungsdatenbank gelöscht werden. min_distretention ist vom Datentyp int; der Standardwert ist 0 Stunden.

  • [ @max_distretention=] max_distretention
    Die Höchstbeibehaltungsdauer in Stunden, nach der Transaktionen gelöscht werden. max_distretention ist vom Datentyp int; der Standardwert ist 72 Stunden. Abonnements, die keine replizierten Befehle empfangen haben, die älter sind als die maximale Beibehaltungsdauer der Verteilung, werden als inaktiv markiert und müssen erneut initialisiert werden. RAISERROR 21011 wird für jedes inaktive Abonnement ausgegeben. Der Wert 0 bedeutet, dass replizierte Transaktionen nicht in der Verteilungsdatenbank gespeichert werden.

  • [ @history_retention=] history_retention
    Die Anzahl der Stunden, für die der Verlauf beibehalten wird. history_retention ist vom Datentyp int; der Standardwert ist 48 Stunden.

  • [ @security_mode=] security_mode
    Der Sicherheitsmodus, der beim Synchronisieren zum Herstellen der Verbindung mit dem Verteiler verwendet wird. security_mode ist vom Datentyp int und hat den Standardwert 1. 0 gibt die SQL Server-Authentifizierung und 1 die integrierte Windows-Authentifizierung an.

  • [ @login=] 'login'
    Der Anmeldename, der bei der Verbindungsherstellung zum Verteiler für die Erstellung der Verteilungsdatenbank verwendet wird. Dieser ist erforderlich, wenn security_mode auf 0 festgelegt wird. login ist vom Datentyp sysname und hat den Standardwert NULL.

  • [ @password=] 'password'
    Das Kennwort, das bei der Verbindungsherstellung zum Verteiler verwendet wird. Dieses ist erforderlich, wenn security_mode auf 0 festgelegt wird. password ist vom Datentyp sysname und hat den Standardwert NULL.

  • [ @createmode=] createmode
    createmode ist ein Wert vom Datentyp int mit dem Standardwert 1. Die folgenden Werte sind möglich.

    Wert

    Beschreibung

    0

    Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

    1 (Standard)

    CREATE DATABASE oder Verwenden einer vorhandenen Datenbank und anschließendes Anwenden der Datei instdist.sql, um Replikationsobjekte in der Verteilungsdatenbank zu erstellen.

    2

    Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

  • [ @from_scripting = ] from_scripting
    Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Hinweise

sp_adddistributiondb wird bei allen Replikationstypen verwendet. Diese gespeicherte Prozedur kann jedoch nur auf einem Verteiler ausgeführt werden.

Sie müssen den Verteiler konfigurieren, indem Sie sp_adddistributor vor sp_adddistributiondb ausführen.

Führen Sie sp_adddistributor vor der Ausführung von sp_adddistributiondb aus.

Beispiel

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

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

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin können sp_adddistributiondb ausführen.