sp_adddistributor (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

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. Esse procedimento armazenado é executado no Distribuidor no master banco de dados para registrar e marcar o servidor como um distribuidor. No caso de um distribuidor remoto, ele também é executado no Publicador a partir do master banco de dados para registrar o distribuidor remoto.

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

@distributor [ = ] N'distribuidor'

O nome do servidor de distribuição. @distributor é sysname, sem padrão. Esse parâmetro só é usado na configuração de 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 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 prosseguir sem registrar uma mensagem de progresso. @heartbeat_interval é int, com um padrão de 10 minutos. Um trabalho do SQL Server Agent é criado e executado nesse intervalo para verificar os status dos agentes de replicação em execução.

@password [ = ] N'senha'

A senha do distributor_admin login. @password é sysname, com um padrão de NULL. Se a senha for NULL ou uma string 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 do 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 Publicador e no Distribuidor. sp_changedistributor_password pode ser usado para alterar a senha do Distribuidor.

Importante

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

@from_scripting [ = ] from_scripting

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

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Comentários

sp_adddistributor é usado na 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_adddistributor.