Partilhar via


sp_adddistributiondb (Transact-SQL)

Cria um novo banco de dados de distribuição e instala o esquema de Distribuição. O banco de dados de distribuição armazena procedimentos, esquema e metadados usados em replicação. Esse procedimento armazenado é executado no Distribuidor, no banco de dados mestre, para criar o banco de dados de distribuição e instalar as tabelas necessárias e os procedimentos armazenados requeridos para habilitar a distribuição da aplicação.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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'
    É o nome do banco de dados de distribuição que será criado. database é sysname, sem padrão. Se o banco de dados especificado já existir e não estiver marcado como banco de dados de distribuição, os objetos necessários para habilitar a distribuição serão instalados e o banco de dados será marcado como banco de dados de distribuição. Se o banco de dados especificado já estiver habilitado como um banco de dados de distribuição, um erro será retornado.

  • [ @data_folder=] **'**data_folder'
    É o nome do diretório usado para armazenar o arquivo de dados do banco de dados de distribuição. data_folder é nvarchar(255), com um padrão NULL. Se for NULL, o diretório de dados para aquela instância do MicrosoftSQL Server será usado, por exemplo, C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data.

  • [ @data_file=] 'data_file'
    É o nome do arquivo do banco de dados. data_file é nvarchar(255), com um padrão de banco de dados. Se for NULL, o procedimento armazenado cria um nome de arquivo usando o nome de banco de dados.

  • [ @data_file_size=] data_file_size
    É o tamanho de arquivo de dados inicial em megabytes (MB). data_file_size i é int, com um padrão de 5MB.

  • [ @log_folder=] 'log_folder'
    É o nome do diretório para o arquivo de log de banco de dados. log_folder é nvarchar(255), com um padrão NULL. Se for NULL, o diretório de dados para aquela instância do SQL Server será usado (por exemplo, C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data).

  • [ @log_file=] 'log_file'
    É o nome do arquivo de log. log_file é nvarchar(255), com um padrão NULL. Se for NULL, o procedimento armazenado cria um nome de arquivo usando o nome de banco de dados.

  • [ @log_file_size=] log_file_size
    É o tamanho do arquivo de log inicial em megabytes (MB). log_file_size é int, com um padrão de 0 MB, que significa que o tamanho do arquivo é criado usando o arquivo de log de menor tamanho permitido pelo SQL Server.

  • [ @min_distretention=] min_distretention
    É o período de retenção mínimo, em horas, antes que as transações sejam excluídas dos bancos de dados de distribuição. min_distretention é int, com um padrão de 0 horas.

  • [ @max_distretention=] max_distretention
    É o período de retenção máximo, em horas, antes que as transações sejam excluídas. max_distretention é int, com um padrão de 72 horas. Assinaturas que não receberam comandos replicados mais antigos do que o período máximo de retenção de distribuição são marcadas como inativas e precisam ser reiniciadas. RAISERROR 21011 é emitido para cada assinatura inativa. Um valor de 0 significa que transações replicadas não são armazenadas no banco de dados de distribuição.

  • [ @history_retention=] history_retention
    É o número de horas para reter o histórico. history_retention é int, com um padrão de 48 horas.

  • [ @security_mode=] security_mode
    É o modo de segurança a ser usado ao se conectar a um Distribuidor. security_mode é int, com um padrão 1. 0 especifica Autenticação do SQL Server e 1 especifica Autenticação Integrada do Windows.

  • [ @login=] 'login'
    É o nome de logon usado ao conectar ao Distribuidor para criar o banco de dados de distribuição. Isto será requerido se security_mode for definido como 0. login é sysname, com um padrão NULL.

  • [ @password=] 'password'
    É a senha usada ao conectar ao Distribuidor. Isso é necessário se security_mode estiver definido como 0. password é sysname, com um padrão NULL.

  • [ @createmode=] createmode
    createmode é int, com um padrão 1 e pode ser um dos seguintes valores.

    Valor

    Descrição

    0

    Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

    1 (padrão)

    CREATE DATABASE ou use o banco de dados existente e aplique o arquivo instdist.sql para criar objetos de replicação no banco de dados de distribuição.

    2

    Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

  • [ @from_scripting = ] from_scripting
    Identificado apenas para fins informativos. Não há suporte. A compatibilidade futura não está garantida.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_adddistributiondb é usado em todos os tipos de replicação. Porém, esse procedimento armazenado só é executado em um distribuidor.

Você deve configurar o distribuidor executando sp_adddistributor antes de executar sp_adddistributiondb.

Execute sp_adddistributor antes de executar sp_adddistributiondb.

Exemplo

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

Permissões

Somente membros da função de servidor fixa sysadmin podem executar sp_adddistributiondb.