Compartilhar via


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.