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.
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'
Entspricht dem Namen der zu erstellenden Verteilungsdatenbank. database ist vom Datentyp sysname und hat keinen Standardwert. 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'
Entspricht dem Namen des Verzeichnisses zum Speichern der Datendatei für die Verteilungsdatenbank. data_folder ist vom Datentyp nvarchar(255). Der Standardwert ist NULL. Bei NULL wird das Datenverzeichnis für diese Instanz von Microsoft SQL Server verwendet, beispielsweise C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data.[ @data_file=] 'data_file'
Entspricht dem Namen der Datenbankdatei. data_file ist vom Datentyp nvarchar(255). Der Standardwert ist database. Bei NULL erstellt die gespeicherte Prozedur einen Dateinamen mithilfe des Datenbanknamens.[ @data_file_size=] data_file_size
Ist die ursprüngliche Datendateigröße in Megabytes (MB). data_file_size ist vom Datentyp int. Der Standardwert ist 5 MB.[ @log_folder=] 'log_folder'
Entspricht dem Namen des Verzeichnisses für die Datenbankprotokolldatei. log_folder ist vom Datentyp nvarchar(255). Der Standardwert ist NULL. Bei NULL wird das Datenverzeichnis für diese Instanz von SQL Server verwendet (beispielsweise C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data).[ @log_file=] 'log_file'
Entspricht dem Namen der Protokolldatei. log_file ist vom Datentyp nvarchar(255). Der Standardwert ist NULL. Bei NULL erstellt die gespeicherte Prozedur einen Dateinamen mithilfe des Datenbanknamens.[ @log_file_size=] log_file_size
Ist die ursprüngliche Protokolldateigröße in Megabytes (MB). log_file_size ist vom Datentyp int, mit dem Standardwert 0 MB. Das bedeutet, dass die Dateigröße mit der kleinsten von SQL Server zugelassenen Protokolldateigröße erstellt wird.[ @min_distretention=] min_distretention
Entspricht der minimalen Beibehaltungsdauer in Stunden, bevor Transaktionen aus der Verteilungsdatenbank gelöscht werden. min_distretention ist vom Datentyp int. Der Standardwert ist 0 Stunden.[ @max_distretention=] max_distretention
Ist die maximale Beibehaltungsdauer in Stunden, bevor 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
Ist die Anzahl an Stunden der Beibehaltung des Verlaufs. history_retention ist vom Datentyp int. Der Standardwert ist 48 Stunden.[ @security_mode=] security_mode
Der Sicherheitsmodus, der zum Herstellen der Verbindung mit einem Verteiler verwendet wird. security_mode ist vom Datentyp int. Der Standardwert ist 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. Dies ist erforderlich, wenn security_mode auf 0 festgelegt wird. login ist vom Datentyp sysname. Der Standardwert ist 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 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'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
Berechtigungen
Nur Mitglieder der festen Serverrolle sysadmin können sp_adddistributiondb ausführen.
Siehe auch
Verweis
sp_changedistributiondb (Transact-SQL)
sp_dropdistributiondb (Transact-SQL)
sp_helpdistributiondb (Transact-SQL)
Gespeicherte Systemprozeduren (Transact-SQL)