Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a: SQL Server
Azure SQL Managed Instance
Cria uma nova base de dados de distribuição e instala o esquema do Distribuidor. A base de dados de distribuição armazena procedimentos, esquemas e metadados usados na replicação. Este procedimento armazenado é executado no Distribuidor na master base de dados para criar a base de dados de distribuição e instalar as tabelas e procedimentos armazenados necessários para permitir a distribuição de replicação.
Transact-SQL convenções de sintaxe
Syntax
sys.sp_adddistributiondb
[ @database = ] N'database'
[ , [ @data_folder = ] N'data_folder' ]
[ , [ @data_file = ] N'data_file' ]
[ , [ @data_file_size = ] data_file_size ]
[ , [ @log_folder = ] N'log_folder' ]
[ , [ @log_file = ] N'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 = ] N'login' ]
[ , [ @password = ] N'password' ]
[ , [ @createmode = ] createmode ]
[ , [ @from_scripting = ] from_scripting ]
[ , [ @deletebatchsize_xact = ] deletebatchsize_xact ]
[ , [ @deletebatchsize_cmd = ] deletebatchsize_cmd ]
[ ; ]
Arguments
@database [ = ] N'base de dados'
O nome da base de dados de distribuição a ser criada. @database é sysname, sem padrão. Se a base de dados especificada já existir e não estiver já marcada como base de dados de distribuição, então os objetos necessários para permitir a distribuição são instalados, e a base de dados é marcada como uma base de dados de distribuição. Se a base de dados especificada já estiver ativada como base de dados de distribuição, é devolvedo um erro.
[ @data_folder = ] N'data_folder'
O nome do diretório usado para armazenar o ficheiro de dados da base de dados de distribuição.
@data_folder é nvarchar(255), com um padrão de NULL. Se NULL, o diretório de dados para essa instância do SQL Server é usado, por exemplo, C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data.
[ @data_file = ] N'data_file'
O nome do ficheiro da base de dados.
@data_file é nvarchar(255), com um padrão de NULL. Se NULL, o procedimento armazenado constrói um nome de ficheiro usando o nome da base de dados.
[ @data_file_size = ] data_file_size
O tamanho inicial do ficheiro de dados em megabytes (MB).
@data_file_size é int, com um padrão de 5, que é 5 MB.
[ @log_folder = ] N'log_folder'
O nome do diretório do ficheiro de registo da base de dados.
@log_folder é nvarchar(255), com um padrão de NULL. Se NULL, o diretório de dados para essa instância do SQL Server é usado (por exemplo, C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data).
[ @log_file = ] N'log_file'
O nome do ficheiro de registo.
@log_file é nvarchar(255), com um padrão de NULL. Se NULL, o procedimento armazenado constrói um nome de ficheiro usando o nome da base de dados.
[ @log_file_size = ] log_file_size
O tamanho inicial do ficheiro de registo em megabytes (MB).
@log_file_size é int, com um padrão de 0, que cria o ficheiro usando o menor tamanho permitido pelo Database Engine.
[ @min_distretention = ] min_distretention
O período mínimo de retenção, em horas, antes de as transações serem eliminadas da base de dados de distribuição.
@min_distretention é int, com um padrão de 0.
[ @max_distretention = ] max_distretention
O período máximo de retenção, em horas, antes de as transações serem eliminadas.
@max_distretention é int, com um padrão de 72. As subscrições que não receberam comandos replicados, e que são mais antigas do que o período máximo de retenção da distribuição, são marcadas como inativas e precisam de ser reiniciadas. O erro número 21011 é emitido para cada subscrição inativa. Um valor de 0 significa que as transações replicadas não estão armazenadas na base de dados de distribuição.
[ @history_retention = ] history_retention
O número de horas para reter a história.
@history_retention é int, com um padrão de 48, o que significa dois dias.
@security_mode [ = ] security_mode
O modo de segurança a usar ao ligar-se ao Distribuidor.
@security_mode é int, com um padrão de 1.
-
0especifica autenticação SQL Server -
1especifica autenticação no Windows
@login [ = ] N'login'
O nome de login usado ao ligar-se ao Distribuidor para criar a base de dados de distribuição.
@login é sysname, com um padrão de NULL.
@login é necessário se @security_mode estiver definido para 0.
@password [ = ] N'senha'
A palavra-passe usada ao ligar-se ao Distribuidor.
@password é sysname, com um padrão de NULL.
@password é necessário se @security_mode estiver definido para 0.
[ @createmode = ] createmode
@createmode é int, e pode ser um dos seguintes valores.
| Value | Description |
|---|---|
0 |
Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida. |
1 (padrão) |
CREATE DATABASE ou usar a base de dados existente e depois aplicar o instdist.sql ficheiro para criar objetos de replicação na base de dados de distribuição. |
2 |
Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida. |
@from_scripting [ = ] from_scripting
Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.
[ @deletebatchsize_xact = ] deletebatchsize_xact
Especifica o tamanho do lote a ser usado durante a limpeza de transações expiradas das MSRepl_Transactions tabelas.
@deletebatchsize_xact é int, com um padrão de 5000.
Aplica-se a: SQL Server 2012 (11.x) com Service Pack 4, SQL Server 2016 (13.x) com Service Pack 2, SQL Server 2017 (14.x) e versões posteriores.
[ @deletebatchsize_cmd = ] deletebatchsize_cmd
Especifica o tamanho do lote a ser usado durante a limpeza de comandos expirados das MSRepl_Commands tabelas.
@deletebatchsize_cmd é int, com um padrão de 2000.
Aplica-se a: SQL Server 2012 (11.x) com Service Pack 4, SQL Server 2016 (13.x) com Service Pack 2, SQL Server 2017 (14.x) e versões posteriores.
Valores de código de retorno
0 (sucesso) ou 1 (fracasso).
Remarks
sp_adddistributiondb é usado em todos os tipos de replicação. No entanto, este procedimento armazenado só funciona num distribuidor.
Deve configurar o distribuidor executando sp_adddistributor antes de sp_adddistributiondbexecutar .
Correr sp_adddistributor antes de correr sp_adddistributiondb.
Examples
Este script utiliza variáveis de scripting SQLCMD e deve correr em modo SQLCMD. As variáveis têm a forma $(MyVariable). Para informações sobre como usar variáveis de scripting na linha de comandos e no SQL Server Management Studio, consulte os Scripts de Replicação em Execução.
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'AdventureWorks2022';
-- Install the server MYDISTPUB as a Distributor using the defaults,
-- including autogenerating the distributor password.
USE master
EXECUTE sp_adddistributor @distributor = @distributor;
-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master
EXECUTE sp_adddistributiondb @database = @distributionDB,
@security_mode = 1;
GO
-- Create a Publisher and enable AdventureWorks2022 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]
EXECUTE sp_adddistpublisher @publisher = @publisher,
@distribution_db = @distributionDB,
@security_mode = 1;
GO
Permissions
Somente membros da função de servidor fixa sysadmin podem executar sp_adddistributiondbo .