Compartir a través de


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 temasConvenciones 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'
    Nombre de la base de datos de distribución que se va a crear. database es de tipo sysname y no tiene ningún 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 utilizado 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 MicrosoftSQL Server, por ejemplo, C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data.

  • [ @data_file=] 'data_file'
    Es el nombre del archivo de la base de datos. data_file es de tipo nvarchar(255) y su valor predeterminado es 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 es de tipo int y su valor predeterminado es 5 MB.

  • [ @log_folder=] 'log_folder'
    Es el nombre del directorio del archivo de registro de 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\MSSQL10.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 mínimo de retención, en horas, antes de que se eliminen las transacciones 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 en que se conserva el historial. history_retention es de tipo int y su valor predeterminado es de 48 horas.

  • [ @security_mode=] security_mode
    Es el modo de seguridad que se utiliza al conectarse al 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 el valor de security_mode se establece 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

    Solo 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

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

  • [ @from_scripting = ] from_scripting
    Solo 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)

Notas

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

Permisos

Sólo los miembros de la función fija de servidor sysadmin pueden ejecutar sp_adddistributiondb.