Condividi tramite


sp_adddistributiondb (Transact-SQL)

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 database master del server di distribuzione per la creazione del database di distribuzione e per l'installazione delle tabelle e delle stored procedure necessarie per la distribuzione della replica.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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 ]

Argomenti

  • [ @database=] database'
    Nome del database di distribuzione da creare. database è di tipo sysname e non prevede alcun valore predefinito. Se il database specificato esiste già e non è contrassegnato come database di distribuzione, vengono installati gli oggetti necessari per consentire 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=] **'**data_folder'
    Nome della directory utilizzata per l'archiviazione del file di dati del database di distribuzione. data_folder è di tipo nvarchar(255) e il valore predefinito è NULL. Se il valore è NULL, viene utilizzata la directory dei dati di tale istanza di MicrosoftSQL Server, ad esempio C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data.

  • [ @data_file=] 'data_file'
    Nome del file di database. data_file è di tipo nvarchar(255) e il valore predefinito è database. Se è NULL, la stored procedure crea il nome del nuovo file in base al nome del database.

  • [ @data_file_size=] data_file_size
    Dimensioni iniziali del file di dati in megabyte (MB). data_file_size è di tipo int e il valore predefinito è 5 MB.

  • [ @log_folder=] 'log_folder'
    Nome della directory utilizzata per il file di log del database. log_folder è di tipo nvarchar(255) e il valore predefinito è NULL. Se il valore è NULL, viene utilizzata la directory dei dati di tale istanza di SQL Server, ad esempio C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data.

  • [ @log_file=] 'log_file'
    Nome del file di log. log_file è di tipo nvarchar(255) e il valore predefinito è NULL. Se il valore è NULL, la stored procedure crea il nome del nuovo file in base al nome del database.

  • [ @log_file_size=] log_file_size
    Dimensioni iniziali del file di log in megabyte (MB). log_file_size è di tipo int e il valore predefinito è 0 MB, che indica che le dimensioni iniziali del file corrispondono alle dimensioni minime consentite per i file di log in SQL Server.

  • [ @min_distretention=] min_distretention
    Periodo di memorizzazione minimo, espresso in ore, che deve trascorrere prima dell'eliminazione delle transazioni dal database di distribuzione. min_distretention è di tipo int e il valore predefinito è 0 ore.

  • [ @max_distretention=] max_distretention
    Periodo di memorizzazione massimo, espresso in ore, trascorso il quale le transazioni vengono eliminate. max_distretention è di tipo int e il valore predefinito è 72 ore. Le sottoscrizioni che non hanno ricevuto comandi replicati e che hanno superato il periodo di memorizzazione massimo per la distribuzione vengono contrassegnate come inattive e devono essere reinizializzate. Per ogni sottoscrizione disattivata viene eseguita l'istruzione RAISERROR 21011. Il valore 0 indica che le transazioni replicate non vengono archiviate nel database di distribuzione.

  • [ @history_retention=] history_retention
    Numero di ore di memorizzazione della cronologia. history_retention è di tipo int e il valore predefinito è 48 ore.

  • [ @security_mode=] security_mode
    Modalità di protezione da utilizzare quando ci si connette al server di distribuzione. security_mode è di tipo int e il valore predefinito è 1. Il valore 0 specifica l'autenticazione di SQL Server e il valore 1 l'autenticazione integrata di Windows.

  • [ @login=] 'login'
    Nome dell'account di accesso utilizzato per la connessione al server di distribuzione per la creazione del database di distribuzione. Questo parametro è obbligatorio se security_mode è impostato su 0. login è di tipo sysname e il valore predefinito è NULL.

  • [ @password=] 'password'
    Password utilizzata per la connessione al server di distribuzione. Questo parametro è obbligatorio se security_mode è impostato su 0. password è di tipo sysname e il valore predefinito è NULL.

  • [ @createmode=] createmode
    createmode è di tipo int e il valore predefinito è 1. I valori possibili sono i seguenti.

    Valore

    Descrizione

    0

    Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

    1 (predefinito)

    Crea un database (CREATE DATABASE) o utilizza un database esistente e applica il file instdist.sql per la creazione degli 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.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

sp_adddistributiondb viene utilizzata per tutti i tipi di replica, ma viene eseguita solo in un server di distribuzione.

Prima di eseguire sp_adddistributiondb, è necessario eseguire sp_adddistributor per configurare il server di distribuzione.

Eseguire sp_adddistributor prima di sp_adddistributiondb.

Esempio

-- 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'AdventureWorks'; 

-- 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 AdventureWorks 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.