Partilhar via


sp_adddistributor (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL Managed Instance

Cria uma entrada na tabela sys.servers (se não houver uma), marca a entrada do servidor como um Distribuidor e armazena informações de propriedade. Este procedimento armazenado é executado no Distribuidor na master base de dados para registar e marcar o servidor como distribuidor. No caso de um distribuidor remoto, ele também é executado no Publisher a master partir do banco de dados para registrar o distribuidor remoto.

Transact-SQL convenções de sintaxe

Sintaxe

sp_adddistributor
    [ @distributor = ] N'distributor'
    [ , [ @heartbeat_interval = ] heartbeat_interval ]
    [ , [ @password = ] N'password' ]
    [ , [ @from_scripting = ] from_scripting ]
    [ , [ @encrypt_distributor_connection = ] N'encrypt_distributor_connection' ]
    [ , [ @trust_distributor_certificate = ] N'trust_distributor_certificate' ]
    [ , [ @host_name_in_distributor_certificate = ] N'host_name_in_distributor_certificate' ]
[ ; ]

Arguments

@distributor [ = ] N'distribuidor'

O nome do servidor de distribuição. @distributor é sysname, sem padrão. Este parâmetro só é usado se estiver configurando um Distribuidor remoto. Ele adiciona entradas para as propriedades do Distribuidor na msdb..MSdistributor tabela.

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

@heartbeat_interval [ = ] heartbeat_interval

O número máximo de minutos que um agente pode passar sem registrar uma mensagem de progresso. @heartbeat_interval é int, com um padrão de 10 minutos. É criado um trabalho do SQL Server Agent que é executado nesse intervalo para verificar o status dos agentes de replicação em execução.

@password [ = ] N'senha'

A senha do login distributor_admin . @password é sysname, com um padrão de NULL. Se a senha for NULL ou uma cadeia de caracteres vazia, @password será redefinida para um valor aleatório. A senha deve ser configurada quando o primeiro distribuidor remoto é adicionado. distributor_admin login e @password são armazenados para entrada de servidor vinculado usada para uma conexão RPC de distribuidor , incluindo conexões locais. Se o distribuidor for local, a senha para distributor_admin será definida como um novo valor. Para Publicadores com um Distribuidor remoto, o mesmo valor para @password deve ser especificado ao executar sp_adddistributor no Editor e no Distribuidor. sp_changedistributor_password pode ser utilizado para alterar a palavra-passe do Distribuidor.

Importante

Quando possível, solicite que os usuários insiram credenciais de segurança em tempo de execução. Se você precisar armazenar credenciais em um arquivo de script, deverá proteger o arquivo para impedir o acesso não autorizado.

@from_scripting [ = ] from_scripting

@from_scripting é bit, com um padrão de 0. Identificado apenas para fins informativos. Não suportado. A compatibilidade futura não é garantida.

@encrypt_distributor_connection [ = ] N'encrypt_distributor_connection'

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores.

Determina se a conexão do servidor vinculado interno do editor ao distribuidor é criptografada. Os valores são mapeados para a propriedade do Encrypt provedor OLE DB. @encrypt_distributor_connection é nvarchar(10), e não pode ser NULL.

@encrypt_distributor_connection pode ser um dos seguintes valores:

  • mandatory (padrão com o provedor Microsoft OLE DB 19)
  • no ou false (padrão com o provedor Microsoft OLE DB 18)
  • true ou yes
  • optional
  • strict

@trust_distributor_certificate [ = ] N'trust_distributor_certificate'

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores.

Indica se o certificado TLS do distribuidor deve ser confiável sem validação. O valor é mapeado para a propriedade do TrustServerCertificate provedor OLE DB e normalmente é usado em conjunto com a Mandatory configuração de criptografia ao usar certificados autoassinados. @trust_distributor_certificate é nvarchar(5), e não pode ser NULL.

@trust_distributor_certificate pode ser um dos seguintes valores:

  • no (padrão)
  • yes

Observação

Os padrões seguros pertencem ao provedor OLEDB subjacente 19, que aumenta a segurança. A opção para substituir o padrão é menos segura do que configurar sua instância para usar um certificado confiável. Depois de substituir o padrão, você tem a opção de configurar o SQL Server para usar um certificado e, em seguida, usar o procedimento armazenado sp_changedistributor_property para definir a trust_distributor_certificate=no propriedade de volta para o padrão seguro.

@host_name_in_distributor_certificate [ = ] N'host_name_in_distributor_certificate'

Aplica-se a: SQL Server 2025 (17.x) e versões posteriores.

Especifica o nome do host do certificado do Distribuidor, quando ele é diferente do nome do Distribuidor, como quando o endereço IP ou o alias DNS é usado como o nome do Distribuidor. Deixe o parâmetro @host_name_in_distributor_certificate vazio se o nome do host no certificado corresponder ao nome do distribuidor. @host_name_in_distributor_certificate é nvarchar(255) de qualquer valor de cadeia de caracteres, com um padrão de NULL.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Observações

sp_adddistributor é usado na replicação de snapshot, replicação transacional e replicação de mesclagem.

Examples

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

Configurar o distribuidor para confiar no certificado autoassinado

Para substituir o padrão seguro do provedor OLEDB 19 e definir trust_distributor_certificate=yes para que o distribuidor confie no certificado autoassinado, use o seguinte exemplo:

EXECUTE sys.sp_adddistributor @trust_distributor_certificate = 'yes';

Observação

Os padrões seguros pertencem ao provedor OLEDB subjacente 19, que aumenta a segurança. A opção para substituir o padrão é menos segura do que configurar sua instância para usar um certificado confiável. Depois de substituir o padrão, você tem a opção de configurar o SQL Server para usar um certificado e, em seguida, usar o procedimento armazenado sp_changedistributor_property para definir a trust_distributor_certificate=no propriedade de volta para o padrão seguro.

Para mais informações, consulte a variação do distribuidor remoto no SQL Server 2025.

Permissions

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