sp_adddistributiondb (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

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 beim Distributor auf der master Datenbank ausgeführt, um die Verteilungsdatenbank zu erstellen und die erforderlichen Tabellen und gespeicherten Prozeduren zu installieren, die erforderlich sind, um die Replikationsverteilung zu ermöglichen.

Transact-SQL-Syntaxkonventionen

Syntax

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 ]
[ ; ]

Argumente

[ @database = ] N'datenbank'

Der Name der zu erstellenden Verteilungsdatenbank. @database ist "sysname" ohne Standard. Wenn die angegebene Datenbank bereits vorhanden ist und noch nicht als Verteilungsdatenbank gekennzeichnet ist, werden die zum Aktivieren der Verteilung erforderlichen Objekte installiert, und die Datenbank wird als Verteilungsdatenbank markiert. Wenn die angegebene Datenbank bereits als Verteilungsdatenbank aktiviert wurde, wird ein Fehler zurückgegeben.

[ @data_folder = ] N'data_folder'

Der Name des Verzeichnisses, das zum Speichern der Verteilungsdatenbankdatendatei verwendet wird. @data_folder ist nvarchar(255), wobei die Standardeinstellung istNULL. Wenn NULLdas Datenverzeichnis für diese Instanz von SQL Server verwendet wird, C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Dataz. B. .

[ @data_file = ] N'data_file'

Der Name der Datenbankdatei. @data_file ist nvarchar(255), wobei die Standardeinstellung istNULL. Wenn NULLdie gespeicherte Prozedur einen Dateinamen mit dem Datenbanknamen erstellt.

[ @data_file_size = ] data_file_size

Die anfängliche Datendateigröße in Megabyte (MB). @data_file_size ist int mit einem Standardwert von 55 MB.

[ @log_folder = ] N'log_folder'

Der Name des Verzeichnisses für die Datenbankprotokolldatei. @log_folder ist nvarchar(255), mit einem Standardwert von NULL. Wenn NULLdas Datenverzeichnis für diese Instanz von SQL Server verwendet wird (z. B C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data. ).

[ @log_file = ] N'log_file'

Der Name der Protokolldatei. @log_file ist nvarchar(255), mit einem Standardwert von NULL. Wenn NULLdie gespeicherte Prozedur einen Dateinamen mit dem Datenbanknamen erstellt.

[ @log_file_size = ] log_file_size

Die anfängliche Protokolldateigröße in Megabyte (MB). @log_file_size ist int, mit einem Standardwert von 0, der die Datei mit der kleinsten Von der Datenbank-Engine zulässigen Protokolldateigröße erstellt.

[ @min_distretention = ] min_distretention

Der minimale Aufbewahrungszeitraum in Stunden, bevor Transaktionen aus der Verteilungsdatenbank gelöscht werden. @min_distretention ist int mit einem Standardwert von 0.

[ @max_distretention = ] max_distretention

Die maximale Beibehaltungsdauer in Stunden, bevor Transaktionen gelöscht werden. @max_distretention ist int mit einem Standardwert von 72. Abonnements, die keine replizierten Befehle erhalten haben und älter als der maximale Verteilungsaufbewahrungszeitraum sind, werden als inaktiv gekennzeichnet und müssen erneut initialisiert werden. Die Fehlernummer 21011 wird für jedes inaktive Abonnement ausgegeben. Ein Wert von 0 bedeutet, dass replizierte Transaktionen nicht in der Verteilungsdatenbank gespeichert werden.

[ @history_retention = ] history_retention

Die Anzahl der Stunden, für die der Verlauf erhalten bleibt. @history_retention ist "int" mit der Standardeinstellung "48, was zwei Tage bedeutet.

[ @security_mode = ] security_mode

Der Beim Herstellen einer Verbindung mit dem Distributor zu verwendende Sicherheitsmodus. @security_mode ist int mit einem Standardwert von 1.

  • 0 Gibt die SQL Server-Authentifizierung an.
  • 1Gibt Windows-Authentifizierung

[ @login = ] N'login'

Der Anmeldename, der beim Herstellen einer Verbindung mit dem Distributor zum Erstellen der Verteilungsdatenbank verwendet wird. @login ist "sysname" mit der Standardeinstellung "NULL. @login ist erforderlich, wenn @security_mode auf 0.

[ @password = ] N'password'

Das Kennwort, das beim Herstellen einer Verbindung mit dem Distributor verwendet wird. @password ist "sysname" mit der Standardeinstellung "NULL. @password ist erforderlich, wenn @security_mode auf 0.

[ @createmode = ] createmode

@createmode ist int und kann einer der folgenden Werte sein:

Wert Beschreibung
0 Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.
1 (Standard) CREATE DATABASE oder verwenden Sie vorhandene Datenbank, und wenden Sie die instdist.sql Datei dann an, um Replikationsobjekte in der Verteilungsdatenbank zu erstellen.
2 Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

[ @from_scripting = ] from_scripting

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

[ @deletebatchsize_xact = ] deletebatchsize_xact

Gibt die Batchgröße an, die während sauber up abgelaufener Transaktionen aus den MSRepl_Transactions Tabellen verwendet werden soll. @deletebatchsize_xact ist int, mit einem Standardwert von 5000.

Gilt für: SQL Server 2012 (11.x) mit Service Pack 4, SQL Server 2016 (13.x) mit Service Pack 2, SQL Server 2017 (14.x) und höheren Versionen.

[ @deletebatchsize_cmd = ] deletebatchsize_cmd

Gibt die Batchgröße an, die während sauber up von abgelaufenen Befehlen aus den MSRepl_Commands Tabellen verwendet werden soll. @deletebatchsize_cmd ist int, mit einem Standardwert von 2000.

Gilt für: SQL Server 2012 (11.x) mit Service Pack 4, SQL Server 2016 (13.x) mit Service Pack 2, SQL Server 2017 (14.x) und höheren Versionen.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler).

Hinweise

sp_adddistributiondb wird in 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 der Ausführung ausführensp_adddistributiondb.

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

Beispiele

Dieses Skript verwendet SQLCMD-Skriptvariablen und muss im SQLCMD-Modus ausgeführt werden. Die Variablen befinden sich in der Form $(MyVariable). Informationen zur Verwendung von Skriptvariablen in der Befehlszeile und in SQL Server Management Studio finden Sie in den Ausführungsreplikationsskripts.

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

Berechtigungen

Nur Mitglieder der festen Serverrolle sysadmin können ausgeführt werden sp_adddistributiondb.