Compartir a través de


sp_adddistributor (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Crea una entrada en la tabla sys.servers (si no hay ninguna), marca la entrada del servidor como distribuidor y almacena información de propiedades. Este procedimiento almacenado se ejecuta en el distribuidor de la master base de datos para registrar y marcar el servidor como distribuidor. En el caso de un distribuidor remoto, también se ejecuta en el publicador desde la master base de datos para registrar el distribuidor remoto.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @distributor = ] N'distributor'

Nombre del servidor de distribución. @distributor es sysname, sin ningún valor predeterminado. Este parámetro se utiliza únicamente si se está configurando un distribuidor remoto. Agrega entradas para las propiedades del distribuidor en la msdb..MSdistributor tabla.

Nota:

El nombre del servidor se puede especificar como <Hostname>,<PortNumber> para una instancia predeterminada o <Hostname>\<InstanceName>,<PortNumber> para una instancia con nombre. Especifique el número de puerto de la conexión cuando SQL Server se implemente en Linux o Windows con un puerto personalizado y el servicio del explorador esté deshabilitado. El uso de números de puerto personalizados para el distribuidor remoto se aplica a SQL Server 2019 (15.x) y versiones posteriores.

[ @heartbeat_interval = ] heartbeat_interval

Número máximo de minutos que un agente puede ejecutarse sin registrar un mensaje de progreso. @heartbeat_interval es int, con un valor predeterminado de 10 minutos. Se crea un trabajo del Agente SQL Server que se ejecuta en este intervalo para comprobar el estado de los agentes de replicación que se están ejecutando.

[ @password = ] N'password'

Contraseña del inicio de sesión de distributor_admin . @password es sysname, con un valor predeterminado de NULL. Si la contraseña es NULL o una cadena vacía, @password se restablece a un valor aleatorio. La contraseña debe configurarse cuando se agrega el primer distribuidor remoto. distributor_admin inicio de sesión y @password se almacenan para la entrada del servidor vinculado que se usa para una conexión RPC del distribuidor, incluidas las conexiones locales. Si el distribuidor es local, la contraseña de distributor_admin se establece en un nuevo valor. En el caso de los publicadores con un distribuidor remoto, se debe especificar el mismo valor para @password al ejecutarse tanto en el publicador sp_adddistributor como en el distribuidor. sp_changedistributor_password se puede usar para cambiar la contraseña del distribuidor.

Importante

Cuando sea posible, pida a los usuarios que proporcionen credenciales de seguridad en tiempo de ejecución. Si debe almacenar las credenciales en un archivo de script, proteja el archivo para evitar el acceso no autorizado.

[ @from_scripting = ] from_scripting

@from_scripting es bit, con un valor predeterminado de 0. Solamente se identifica con fines informativos. No compatible. La compatibilidad con versiones posteriores no está garantizada.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

sp_adddistributor se usa en la replicación de instantáneas, la replicación transaccional y la replicación de mezcla.

Ejemplos

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

Permisos

Solo los miembros del rol fijo de servidor sysadmin pueden ejecutar sp_adddistributor.