sp_adddistpublisher (Transact-SQL)
Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure
Configura um Publicador para usar um banco de dados de distribuição especificado. Esse procedimento armazenado é executado no Distribuidor em qualquer banco de dados. Os procedimentos armazenados sp_adddistributor e sp_adddistributiondb devem ter sido executados antes de usar esse procedimento armazenado.
Convenções de sintaxe de Transact-SQL
Sintaxe
sp_adddistpublisher
[ @publisher = ] N'publisher'
, [ @distribution_db = ] N'distribution_db'
[ , [ @security_mode = ] security_mode ]
[ , [ @login = ] N'login' ]
[ , [ @password = ] N'password' ]
[ , [ @working_directory = ] N'working_directory' ]
[ , [ @trusted = ] N'trusted' ]
[ , [ @encrypted_password = ] encrypted_password ]
[ , [ @thirdparty_flag = ] thirdparty_flag ]
[ , [ @publisher_type = ] N'publisher_type' ]
[ , [ @storage_connection_string = ] N'storage_connection_string' ]
[ ; ]
Argumentos
@publisher [ = ] N'editor'
O nome do Publicador. @publisher é sysname, sem padrão.
Observação
O nome do servidor pode ser especificado como <Hostname>,<PortNumber>
para uma instância padrão ou <Hostname>\<InstanceName>,<PortNumber>
para uma instância nomeada. Especifique o número da porta para sua conexão quando o SQL Server for implantado no Linux ou Windows com uma porta personalizada e o serviço do navegador estiver desabilitado. O uso de números de porta personalizados para distribuidor remoto se aplica ao SQL Server 2019 (15.x) e versões posteriores.
@distribution_db [ = ] N'distribution_db'
O nome do banco de dados de distribuição. @distribution_db é sysname, sem padrão. Esse parâmetro é usado por agentes de replicação para conexão com o Publicador.
@security_mode [ = ] security_mode
O modo de segurança implementado. Esse parâmetro só é usado por agentes de replicação para se conectar ao Publicador para assinaturas de atualização enfileiradas ou com um Publicador que não seja do SQL Server. @security_mode é int e pode ser um desses valores.
Valor | Descrição |
---|---|
0 |
Os agentes de replicação no Distribuidor usam a Autenticação do SQL Server para se conectar ao Publicador. |
1 (padrão) |
Agentes de replicação no Distribuidor usam a Autenticação do Windows para conexão com o Publicador. |
@login [ = ] N'login'
O login. Esse parâmetro será necessário se security_mode for 0
. @login é sysname, com um padrão de NULL
. Esse parâmetro é usado por agentes de replicação para conexão com o Publicador.
@password [ = ] N'senha'
A senha. @password é sysname, com um padrão de NULL
. Esse parâmetro é usado por agentes de replicação para conexão com o Publicador.
Importante
Não use uma senha em branco. Use uma senha forte.
@working_directory [ = ] N'working_directory'
O nome do diretório de trabalho usado para armazenar dados e arquivos de esquema para a publicação. @working_directory é nvarchar(255) e o padrão é a ReplData
pasta para esta instância do SQL Server. Por exemplo, C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.1\ReplData
. O nome deve ser especificado no formato UNC.
Para o Banco de Dados SQL do Azure, use \\<storage_account>.file.core.windows.net\<share>
.
@trusted [ = ] N'confiável'
@trusted foi preterido e é fornecido apenas para compatibilidade com versões anteriores. @trusted é nvarchar(5), com um padrão de false
. Definir esse parâmetro como qualquer coisa, exceto false
resulta em um erro.
@encrypted_password [ = ] encrypted_password
Não há mais suporte para a configuração desse parâmetro. @encrypted_password é bit, com um padrão de 0
. Definir esse parâmetro como 1
resulta em um erro.
@thirdparty_flag [ = ] thirdparty_flag
Especifica quando o Publicador é SQL Server. @thirdparty_flag é bit e pode ser um dos seguintes valores.
Valor | Descrição |
---|---|
0 (padrão) |
Banco de dados do SQL Server. |
1 |
Banco de dados diferente do SQL Server. |
@publisher_type [ = ] N'publisher_type'
Especifica o tipo de Publicador quando o Publicador não é SQL Server. @publisher_type é sysname e pode ser um dos valores a seguir.
Valor | Descrição |
---|---|
MSSQLSERVER (padrão) |
Especifica um Publicador do SQL Server. |
ORACLE |
Especifica um Publicador Oracle padrão. |
ORACLE GATEWAY |
Especifica um Editor Oracle Gateway. |
Para obter mais informações sobre as diferenças entre um Publicador Oracle e um Publicador Oracle Gateway, consulte Configurar um Publicador Oracle.
@storage_connection_string [ = ] N'storage_connection_string'
Necessário para o Banco de Dados SQL do Azure. @storage_connection_string é nvarchar(255), com um padrão de NULL
. Use a chave de acesso do portal do Azure, em Configurações de Armazenamento>.
Observação
Os bancos de dados de publicadores e distribuidores no Banco de Dados SQL do Azure exigem a Instância Gerenciada de SQL. Para obter mais informações, consulte Replicação com o Banco de Dados SQL do Azure.
Valores do código de retorno
0
(sucesso) ou 1
(falha).
Comentários
sp_adddistpublisher
é usado pela replicação de instantâneo, replicação transacional e replicação de mesclagem.
Exemplos
-- 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'AdventureWorks2022';
-- 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 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]
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_adddistpublisher
.