sp_adddistributiondb (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Crea un nuovo database di distribuzione e installa lo schema del server di distribuzione. Nel database di distribuzione vengono archiviate le procedure, lo schema e i metadati utilizzati nella replica. Questa stored procedure viene eseguita nel server di distribuzione del master
database per creare il database di distribuzione e installare le tabelle e le stored procedure necessarie per abilitare la distribuzione della replica.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
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 ]
[ ; ]
Argomenti
[ @database = ] N'database'
Nome del database di distribuzione da creare. @database è sysname, senza impostazione predefinita. Se il database specificato esiste già e non è già contrassegnato come database di distribuzione, vengono installati gli oggetti necessari per abilitare la distribuzione e il database viene contrassegnato come database di distribuzione. Se il database specificato è già abilitato come database di distribuzione, viene restituito un errore.
[ @data_folder = ] N'data_folder'
Nome della directory utilizzata per archiviare il file di dati del database di distribuzione. @data_folder è nvarchar(255), con il valore predefinito NULL
. Se NULL
, viene usata la directory dei dati per l'istanza di SQL Server, C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data
ad esempio .
[ @data_file = ] N'data_file'
Nome del file di database. @data_file è nvarchar(255), con un valore predefinito .NULL
Se NULL
, la stored procedure costruisce un nome file usando il nome del database.
[ @data_file_size = ] data_file_size
Dimensioni iniziali del file di dati in megabyte (MB). @data_file_size è int, con un valore predefinito , 5
ovvero 5 MB.
[ @log_folder = ] N'log_folder'
Nome della directory per il file di log del database. @log_folder è nvarchar(255), con un valore predefinito .NULL
Se NULL
, viene usata la directory dei dati per l'istanza di SQL Server, ad esempio C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data
.
[ @log_file = ] N'log_file'
Nome del file di log. @log_file è nvarchar(255), con un valore predefinito .NULL
Se NULL
, la stored procedure costruisce un nome file usando il nome del database.
[ @log_file_size = ] log_file_size
Dimensioni iniziali del file di log in megabyte (MB). @log_file_size è int, con un valore predefinito , 0
che crea il file usando le dimensioni del file di log più piccole consentite dal motore di database.
[ @min_distretention = ] min_distretention
Periodo di conservazione minimo, espresso in ore, prima dell'eliminazione delle transazioni dal database di distribuzione. @min_distretention è int, con il valore predefinito 0
.
[ @max_distretention = ] max_distretention
Periodo di memorizzazione massimo, espresso in ore, trascorso il quale le transazioni vengono eliminate. @max_distretention è int, con il valore predefinito .72
Le sottoscrizioni che non hanno ricevuto comandi replicati e che sono precedenti al periodo di conservazione massimo della distribuzione vengono contrassegnate come inattive e devono essere reinizializzate. Il numero di errore 21011 viene emesso per ogni sottoscrizione inattiva. Un valore indica 0
che le transazioni replicate non vengono archiviate nel database di distribuzione.
[ @history_retention = ] history_retention
Numero di ore di memorizzazione della cronologia. @history_retention è int, con un valore predefinito , 48
ovvero due giorni.
[ @security_mode = ] security_mode
Modalità di sicurezza da utilizzare per la connessione al server di distribuzione. @security_mode è int, con un valore predefinito .1
0
specifica l'autenticazione di SQL Server1
specifica autenticazione di Windows
[ @login = ] N'login'
Nome dell'account di accesso utilizzato per la connessione al server di distribuzione per creare il database di distribuzione. @login è sysname, con il valore predefinito NULL
. @login è necessario se @security_mode è impostato su 0
.
[ @password = ] N'password'
Password utilizzata per la connessione al server di distribuzione. @password è sysname, con un valore predefinito .NULL
@password è necessario se @security_mode è impostato su 0
.
[ @createmode = ] createmode
@createmode è int e può essere uno dei valori seguenti.
valore | Descrizione |
---|---|
0 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
1 (predefinito) |
CREATE DATABASE oppure usare il database esistente e quindi applicare il instdist.sql file per creare oggetti di replica nel database di distribuzione. |
2 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
[ @from_scripting = ] from_scripting
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.
[ @deletebatchsize_xact = ] deletebatchsize_xact
Specifica le dimensioni del batch da utilizzare durante la pulizia delle transazioni scadute dalle MSRepl_Transactions
tabelle. @deletebatchsize_xact è int, con il valore predefinito 5000
.
Si applica a: SQL Server 2012 (11.x) con Service Pack 4, SQL Server 2016 (13.x) con Service Pack 2, SQL Server 2017 (14.x) e versioni successive.
[ @deletebatchsize_cmd = ] deletebatchsize_cmd
Specifica le dimensioni del batch da usare durante la pulizia dei comandi scaduti dalle MSRepl_Commands
tabelle. @deletebatchsize_cmd è int, con il valore predefinito 2000
.
Si applica a: SQL Server 2012 (11.x) con Service Pack 4, SQL Server 2016 (13.x) con Service Pack 2, SQL Server 2017 (14.x) e versioni successive.
Valori del codice restituito
0
(esito positivo) o 1
(errore).
Osservazioni:
sp_adddistributiondb
viene usato in tutti i tipi di replica. ma viene eseguita solo in un server di distribuzione.
È necessario configurare il server di distribuzione eseguendo sp_adddistributor prima di eseguire sp_adddistributiondb
.
Eseguire sp_adddistributor
prima di eseguire sp_adddistributiondb
.
Esempi
Questo script usa variabili di scripting SQLCMD e deve essere eseguito in modalità SQLCMD. Le variabili sono nel formato $(MyVariable)
. Per informazioni su come usare le variabili di scripting nella riga di comando e in SQL Server Management Studio, vedere Esecuzione di script di replica.
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
Autorizzazioni
Solo i membri del ruolo predefinito del server sysadmin possono eseguire sp_adddistributiondb
.