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.
Convenções da 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 a 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 de NULL. Se for NULL, o diretório de dados para aquela instância do Microsoft SQL Server será usado, por exemplo, C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Data.[ @data_file=] 'data_file'
É o nome do arquivo de banco de dados. data_file é nvarchar(255), com um padrão de database. 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 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 de 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\MSSQL12.MSSQLSERVER\MSSQL\Data).[ @log_file=] 'log_file'
É o nome do arquivo de log. log_file é nvarchar(255), com um padrão de 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 de as transações serem excluídas do banco de dados de distribuição. min_distretention é int, com um padrão de 0 horas.[ @max_distretention=] max_distretention
É o período máximo de retenção, 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 retenção do 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 conectar-se a um Distribuidor. security_mode é int, com um padrão de 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. Sem 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. Sem suporte. A compatibilidade futura não está garantida.
[ @from_scripting = ] from_scripting
Identificado apenas para fins informativos. Sem 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'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
Permissões
Somente membros da função de servidor fixa sysadmin podem executar sp_adddistributiondb.
Consulte também
Referência
sp_changedistributiondb (Transact-SQL)
sp_dropdistributiondb (Transact-SQL)
sp_helpdistributiondb (Transact-SQL)
Procedimentos armazenados do sistema (Transact-SQL)