sys.sp_adddistributiondb (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL Managed Instance

Maakt een nieuwe distributiedatabase aan en installeert het Distributor-schema. De distributiedatabase slaat procedures, schema's en metadata op die worden gebruikt bij replicatie. Deze opgeslagen procedure wordt uitgevoerd bij de Distributeur in de master database om de distributiedatabase te creëren en de benodigde tabellen en opgeslagen procedures te installeren die nodig zijn om de replicatiedistributie mogelijk te maken.

Transact-SQL syntaxis-conventies

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'

De naam van de te maken distributiedatabase. @database is een systeemnaam, zonder standaard. Als de gespecificeerde database al bestaat en niet al als distributiedatabase is gemarkeerd, worden de objecten die nodig zijn om distributie mogelijk te maken geïnstalleerd en wordt de database gemarkeerd als distributiedatabase. Als de gespecificeerde database al als distributiedatabase is ingeschakeld, wordt een foutmelding teruggegeven.

[ @data_folder = ] N'data_folder'

De naam van de map die wordt gebruikt om het distributiedatabase-databestand op te slaan. @data_folder is nvarchar(255), met een standaard van NULL. Als NULL, wordt de datamap voor die instantie van SQL Server gebruikt, bijvoorbeeld, C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data.

[ @data_file = ] N'data_file'

De naam van het databasebestand. @data_file is nvarchar(255), met als standaard .NULL Als NULL, construeert de opgeslagen procedure een bestandsnaam met behulp van de databasenaam.

[ @data_file_size = ] data_file_size

De initiële bestandsgrootte van de data in megabytes (MB). @data_file_size is int, met een standaard van 5, wat 5 MB is.

[ @log_folder = ] N'log_folder'

De naam van de map voor het databaselogbestand. @log_folder is nvarchar(255), met als standaard .NULL Als NULL, wordt de datamap voor die instantie van SQL Server gebruikt (bijvoorbeeld C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data).

[ @log_file = ] N'log_file'

De naam van het logbestand. @log_file is nvarchar(255), met als standaard .NULL Als NULL, construeert de opgeslagen procedure een bestandsnaam met behulp van de databasenaam.

[ @log_file_size = ] log_file_size

De initiële logbestandsgrootte in megabytes (MB). @log_file_size is int, met een standaard van 0, wat het bestand aanmaakt met de kleinste logbestandgrootte die door de Database Engine is toegestaan.

[ @min_distretention = ] min_distretention

De minimale bewaartermijn, in uren, voordat transacties uit de distributiedatabase worden verwijderd. @min_distretention is int, met als standaard .0

[ @max_distretention = ] max_distretention

De maximale bewaartermijn, in uren, voordat transacties worden verwijderd. @max_distretention is int, met als standaard .72 Abonnementen die geen gerepliceerde commando's hebben ontvangen en ouder zijn dan de maximale distributieretentieperiode, worden als inactief gemarkeerd en moeten opnieuw worden geïntialiseerd. Foutnummer 21011 wordt gegeven voor elk inactief abonnement. Een waarde van 0 betekent dat gerepliceerde transacties niet worden opgeslagen in de distributiedatabase.

[ @history_retention = ] history_retention

Het aantal uren om geschiedenis te onthouden. @history_retention is int, met een standaard van 48, wat betekent twee dagen.

[ @security_mode = ] security_mode

De beveiligingsmodus om te gebruiken bij het verbinden met de Distributor. @security_mode is int, met als standaard .1

  • 0 specificeert SQL Server-authenticatie
  • 1 specificeert Windows-authenticatie

[ @login = ] N'login'

De inlognaam die wordt gebruikt bij het verbinden met de Distributeur om de distributiedatabase aan te maken. @login is sysname, met een standaardwaarde van NULL. @login is vereist als @security_mode is ingesteld op 0.

[ @password = ] N'wachtwoord'

Het wachtwoord dat wordt gebruikt bij het verbinden met de Distributeur. @password is sysname, met een standaardwaarde van NULL. @password is vereist als @security_mode is ingesteld op 0.

[ @createmode = ] Createmode

@createmode is int, en kan een van de volgende waarden zijn.

Value Description
0 Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.
1 (standaard) CREATE DATABASE of gebruik een bestaande database en pas het instdist.sql bestand toe om replicatieobjecten in de distributiedatabase te maken.
2 Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.

[ @from_scripting = ] from_scripting

Alleen ter informatie geïdentificeerd. Wordt niet ondersteund. Toekomstige compatibiliteit is niet gegarandeerd.

[ @deletebatchsize_xact = ] deletebatchsize_xact

Specificeert de batchgrootte die gebruikt moet worden tijdens het opruimen van verlopen transacties uit de MSRepl_Transactions tabellen. @deletebatchsize_xact is int, met als standaard .5000

Van toepassing op: SQL Server 2012 (11.x) met Service Pack 4, SQL Server 2016 (13.x) met Service Pack 2, SQL Server 2017 (14.x) en latere versies.

[ @deletebatchsize_cmd = ] deletebatchsize_cmd

Specificeert de batchgrootte die gebruikt moet worden tijdens het opruimen van verlopen commando's uit de MSRepl_Commands tabellen. @deletebatchsize_cmd is int, met als standaard .2000

Van toepassing op: SQL Server 2012 (11.x) met Service Pack 4, SQL Server 2016 (13.x) met Service Pack 2, SQL Server 2017 (14.x) en latere versies.

Codewaarden retourneren

0 (geslaagd) of 1 (mislukt).

Remarks

sp_adddistributiondb wordt gebruikt in alle typen replicatie. Deze opgeslagen procedure draait echter alleen bij een verdeler.

Je moet de distributeur configureren door sp_adddistributor uit te voeren voordat je uitvoert sp_adddistributiondb.

Ren sp_adddistributor voordat je gaat rennen sp_adddistributiondb.

Examples

Dit script gebruikt SQLCMD-scriptvariabelen en moet in SQLCMD-modus draaien. De variabelen zijn in de vorm $(MyVariable). Voor informatie over hoe je scriptvariabelen gebruikt op de commandoregel en in SQL Server Management Studio, zie de Uitvoerende Replicatiescripts.

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

Permissions

Alleen leden van de vaste serverrol sysadmin kunnen worden uitgevoerd sp_adddistributiondb.