sys.sp_adddistributiondb (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Skapar en ny distributionsdatabas och installerar Distributor-schemat. Distributionsdatabasen lagrar procedurer, schema och metadata som används vid replikering. Denna lagrade promotor körs hos distributören i databasen master för att skapa distributionsdatabasen och installera nödvändiga tabeller och lagrade procedurer som krävs för att möjliggöra replikeringsdistributionen.

Transact-SQL syntaxkonventioner

Syntax

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

Namnet på distributionsdatabasen som ska skapas. @database är sysname, utan standard. Om den angivna databasen redan finns och inte redan är markerad som en distributionsdatabas, installeras de objekt som behövs för att möjliggöra distribution, och databasen markeras som en distributionsdatabas. Om den angivna databasen redan är aktiverad som distributionsdatabas returneras ett fel.

[ @data_folder = ] N'data_folder'

Namnet på katalogen som används för att lagra distributionsdatabasens datafil. @data_folder är nvarchar(255), med en standard på NULL. Om NULL, används datakatalogen för den instansen av SQL Server, till exempel C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data.

[ @data_file = ] N'data_file'

Namnet på databasfilen. @data_file är nvarchar(255), med en standard på NULL. Om NULL, konstruerar den lagrade proceduren ett filnamn med hjälp av databasnamnet.

[ @data_file_size = ] data_file_size

Den initiala datafilstorleken i megabyte (MB). @data_file_size är int, med standardvärdet , 5vilket är 5 MB.

[ @log_folder = ] N'log_folder'

Namnet på katalogen för databasens loggfil. @log_folder är nvarchar(255), med standardvärdet .NULL Om NULL, används datakatalogen för den instansen av SQL Server (till exempel C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data).

[ @log_file = ] N'log_file'

Namnet på loggfilen. @log_file är nvarchar(255), med en standard på NULL. Om NULL, konstruerar den lagrade proceduren ett filnamn med hjälp av databasnamnet.

[ @log_file_size = ] log_file_size

Den initiala loggfilstorleken i megabyte (MB). @log_file_size är int, med standardvärdet , 0vilket skapar filen med den minsta logfilstorleken som tillåts av Database Engine.

[ @min_distretention = ] min_distretention

Minsta lagringstid, i timmar, innan transaktioner tas bort från distributionsdatabasen. @min_distretention är int, med en standard på 0.

[ @max_distretention = ] max_distretention

Maximal lagringstid, i timmar, innan transaktioner raderas. @max_distretention är int, med standardvärdet .72 Prenumerationer som inte har fått replikerade kommandon och som är äldre än den maximala distributionslagringsperioden markeras som inaktiva och måste initieras om. Felnummer 21011 ges för varje inaktiv prenumeration. Ett värde på 0 innebär att replikerade transaktioner inte lagras i distributionsdatabasen.

[ @history_retention = ] history_retention

Antalet timmar för att bevara historiken. @history_retention är int, med standardvärdet , 48vilket betyder två dagar.

[ @security_mode = ] security_mode

Säkerhetsläget att använda när man ansluter till distributören. @security_mode är int, med standardvärdet .1

  • 0 specificerar SQL Server-autentisering
  • 1 specificerar Windows-autentisering

[ @login = ] N'login'

Inloggningsnamnet som används vid anslutning till distributören för att skapa distributionsdatabasen. @login är sysname med standardvärdet NULL. @login krävs om @security_mode är satt till 0.

[ @password = ] N'password'

Lösenordet som används vid anslutning till distributören. @password är sysname med standardvärdet NULL. @password krävs om @security_mode är satt till 0.

[ @createmode = ] skapade läge

@createmode är int, och kan vara ett av följande värden.

Value Beskrivning
0 Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.
1 (standardinställning) CREATE DATABASE eller använd en befintlig databas och applicera instdist.sql filen för att skapa replikeringsobjekt i distributionsdatabasen.
2 Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

[ @from_scripting = ] from_scripting

Identifieras endast i informationssyfte. Stöds ej. Framtida kompatibilitet garanteras inte.

[ @deletebatchsize_xact = ] deletebatchsize_xact

Specificerar batchstorleken som ska användas vid rensning av utgångna transaktioner från tabellerna MSRepl_Transactions . @deletebatchsize_xact är int, med standardvärdet .5000

Gäller för: SQL Server 2012 (11.x) med Service Pack 4, SQL Server 2016 (13.x) med Service Pack 2, SQL Server 2017 (14.x) och senare versioner.

[ @deletebatchsize_cmd = ] deletebatchsize_cmd

Specificerar batchstorleken som ska användas vid rensning av utgångna kommandon från tabellerna MSRepl_Commands . @deletebatchsize_cmd är int, med standardvärdet .2000

Gäller för: SQL Server 2012 (11.x) med Service Pack 4, SQL Server 2016 (13.x) med Service Pack 2, SQL Server 2017 (14.x) och senare versioner.

Returnera kodvärden

0 (lyckades) eller 1 (fel).

Remarks

sp_adddistributiondb används i alla typer av replikering. Denna lagrade procedur körs dock endast hos en distributör.

Du måste konfigurera distributören genom att köra sp_adddistributor innan du kör sp_adddistributiondb.

Spring sp_adddistributor innan du springer sp_adddistributiondb.

Examples

Detta skript använder SQLCMD-skriptvariabler och måste köras i SQLCMD-läge. Variablerna har formen $(MyVariable). För information om hur man använder skriptvariabler på kommandoraden och i SQL Server Management Studio, se Executing Replication Scripts.

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

EXECUTE sp_adddistributor @distributor = @distributor;

-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master

EXECUTE 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]

EXECUTE sp_adddistpublisher @publisher = @publisher,
    @distribution_db = @distributionDB,
    @security_mode = 1;
GO

behörigheter

Endast medlemmar i den fasta serverrollen sysadmin kan köra sp_adddistributiondb.