sp_adddistributiondb (Transact-SQL)

Crea una nueva base de datos de distribución e instala el esquema del distribuidor. La base de datos de distribución almacena los procedimientos, esquema y metadatos utilizados en la replicación. Este procedimiento almacenado se ejecuta en el distribuidor de la base de datos maestra con el fin de crear la base de datos de distribución e instalar las tablas y procedimientos almacenados necesarios para habilitar la distribución de replicación.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

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 ]

Argumentos

  • [ @database=] database'
    Es el nombre de la base de datos de distribución que se va a crear. database es de tipo sysname y no tiene valor predeterminado. Si la base de datos especificada ya existe y no está ya marcada como base de datos de distribución, entonces los objetos necesarios para habilitar la distribución están instalados y la base de datos está marcada como base de datos de distribución. Si la base de datos especificada ya está habilitada como base de datos de distribución, se obtiene un error.

  • [ @data_folder=] **'**data_folder'
    Es el nombre del directorio usado para almacenar el archivo de datos de la base de datos de distribución. data_folder es de tipo nvarchar(255) y su valor predeterminado es NULL. Si es NULL, se utiliza el directorio de datos para esa instancia de Microsoft SQL Server, por ejemplo, C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data.

  • [ @data_file=] 'data_file'
    Es el nombre del archivo de base de datos. data_file es de tipo nvarchar(255), con un valor predeterminado de database. Si es NULL, el procedimiento almacenado crea un nombre de archivo que utiliza el nombre de la base de datos.

  • [ @data_file_size=] data_file_size
    Es el tamaño inicial del archivo de datos en megabytes (MB). data_file_size i es de tipo int, con un valor predeterminado de 5 MB.

  • [ @log_folder=] 'log_folder'
    Es el nombre del directorio del archivo de registro de la base de datos. log_folder es de tipo nvarchar(255) y su valor predeterminado es NULL. Si es NULL, se utiliza el directorio de datos para esa instancia de SQL Server (por ejemplo, C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data).

  • [ @log_file=] 'log_file'
    Es el nombre del archivo de registro. log_file es de tipo nvarchar(255) y su valor predeterminado es NULL. Si es NULL, el procedimiento almacenado crea un nombre de archivo que utiliza el nombre de la base de datos.

  • [ @log_file_size=] log_file_size
    Es el tamaño inicial del archivo de registro en megabytes (MB). log_file_size es de tipo int y su valor predeterminado es 0 MB, lo que significa que el tamaño del archivo se crea utilizando el tamaño más pequeño permitido por SQL Server.

  • [ @min_distretention=] min_distretention
    Es el período de retención mínimo, en horas, antes de que las transacciones se eliminen de la base de datos de distribución. min_distretention es de tipo int y su valor predeterminado es 0 horas.

  • [ @max_distretention=] max_distretention
    Es el período máximo de retención, en horas, antes de que se eliminen las transacciones. max_distretention es de tipo int y su valor predeterminado es 72 horas. Las suscripciones que no han recibido comandos replicados más antiguos que el período máximo de retención de la distribución se marcarán como inactivas y tendrán que reinicializarse. Se emite RAISERROR 21011 por cada suscripción inactiva. Un valor de 0 indica que las transacciones replicadas no se almacenan en la base de datos de distribución.

  • [ @history_retention=] history_retention
    Es el número de horas que se mantiene el historial. history_retention es de tipo int y su valor predeterminado es 48 horas.

  • [ @security_mode=] security_mode
    Es el modo de seguridad que se debe utilizar al conectarse con el distribuidor. security_mode es de tipo int y su valor predeterminado es 1. 0 especifica la autenticación de SQL Server y 1 especifica la autenticación integrada de Windows.

  • [ @login=] 'login'
    Es el nombre de inicio de sesión utilizado al conectarse al distribuidor para crear la base de datos de distribución. Es obligatorio si security_mode está establecido en 0. login es de tipo sysname y su valor predeterminado es NULL.

  • [ @password=] 'password'
    Es la contraseña utilizada para conectarse al distribuidor. Es obligatorio si el valor de security_mode se establece en 0. password es de tipo sysname y su valor predeterminado es NULL.

  • [ @createmode=] createmode
    createmode es de tipo int, su valor predeterminado es 1 y puede tener uno de los valores siguientes.

    Valor

    Descripción

    0

    Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

    1 (predeterminado)

    Crea una base de datos o utiliza una base de datos existente y, a continuación, aplica el archivo instdist.sql para crear objetos de replicación en la base de datos de distribución.

    2

    Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

  • [ @from_scripting = ] from_scripting
    Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada. 

Valores de código de retorno

0 (correcto) o 1 (error)

Comentarios

sp_adddistributiondb se usa en todos los tipos de replicación. Sin embargo, este procedimiento almacenado se ejecuta únicamente en un distribuidor.

Es necesario configurar el distribuidor mediante la ejecución de sp_adddistributor antes de ejecutar sp_adddistributiondb.

Ejecute sp_adddistributor antes de ejecutar sp_adddistributiondb.

Ejemplo

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

-- 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 AdventureWorks2012 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 

Permisos

Solo los miembros del rol fijo de servidor sysadmin pueden ejecutar sp_adddistributiondb.

Vea también

Referencia

sp_changedistributiondb (Transact-SQL)

sp_dropdistributiondb (Transact-SQL)

sp_helpdistributiondb (Transact-SQL)

Procedimientos almacenados del sistema (Transact-SQL)

Conceptos

Configurar la publicación y la distribución

Configurar la distribución