sp_adddistpublisher (Transact-SQL)

Se aplica a: SQL Server Azure SQL Managed Instance

Configura un publicador para que utilice una base de datos de distribución determinada. Este procedimiento almacenado se ejecuta en el distribuidor en cualquier base de datos. Los procedimientos almacenados sp_adddistributor y sp_adddistributiondb deben haberse ejecutado antes de usar este procedimiento almacenado.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Nombre del publicador. @publisher es sysname, sin ningún valor predeterminado.

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.

[ @distribution_db = ] N'distribution_db'

El nombre de la base de datos de distribución. @distribution_db es sysname, sin ningún valor predeterminado. Los agentes de replicación utilizan este parámetro para conectarse al publicador.

[ @security_mode = ] security_mode

Modo de seguridad implementado. Los agentes de replicación usan este parámetro solo para conectarse al publicador para suscripciones de actualización en cola o con un publicador que no es de SQL Server. @security_mode es int y puede ser uno de estos valores.

Valor Descripción
0 Los agentes de replicación del distribuidor usan la autenticación de SQL Server para conectarse al publicador.
1 (valor predeterminado) Los agentes de replicación del distribuidor utilizan la autenticación de Windows para conectarse al publicador.

[ @login = ] N'login'

Inicio de sesión. Este parámetro es necesario si security_mode es 0. @login es sysname, con un valor predeterminado de NULL. Los agentes de replicación utilizan este parámetro para conectarse al publicador.

[ @password = ] N'password'

La contraseña. @password es sysname, con un valor predeterminado de NULL. Los agentes de replicación utilizan este parámetro para conectarse al publicador.

Importante

No use una contraseña en blanco. Utilice una contraseña segura.

[ @working_directory = ] N'working_directory'

Nombre del directorio de trabajo utilizado para almacenar archivos de datos y de esquema para la publicación. @working_directory es nvarchar(255) y el valor predeterminado es la ReplData carpeta para esta instancia de SQL Server. Por ejemplo, C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.1\ReplData. El nombre se debe especificar en el formato UNC.

Para Azure SQL Database, use \\<storage_account>.file.core.windows.net\<share>.

[ @trusted = ] N'trusted'

@trusted está en desuso y solo se proporciona para la compatibilidad con versiones anteriores. @trusted es nvarchar(5), con un valor predeterminado de false. Si se establece este parámetro en cualquier elemento, pero false se produce un error.

[ @encrypted_password = ] encrypted_password

Ya no se admite establecer este parámetro. @encrypted_password es bit, con un valor predeterminado de 0. Si se establece este parámetro en 1 , se producirá un error.

[ @thirdparty_flag = ] thirdparty_flag

Especifica cuándo el publicador es SQL Server. @thirdparty_flag es bit y puede ser uno de los siguientes valores.

Valor Descripción
0 (valor predeterminado) Base de datos SQL Server.
1 Base de datos distinta de SQL Server.

[ @publisher_type = ] N'publisher_type'

Especifica el tipo de publicador cuando el publicador no es SQL Server. @publisher_type es sysname y puede ser uno de los siguientes valores.

Valor Descripción
MSSQLSERVER (valor predeterminado) Especifica un publicador de SQL Server.
ORACLE Especifica un publicador estándar de Oracle.
ORACLE GATEWAY Especifica un publicador de puerta de enlace de Oracle.

Para obtener más información sobre las diferencias entre un publicador de Oracle y un publicador de puerta de enlace de Oracle, consulte Configuración de un publicador de Oracle.

[ @storage_connection_string = ] N'storage_connection_string'

Necesario para Azure SQL Database. @storage_connection_string es nvarchar(255), con un valor predeterminado de NULL. Use la clave de acceso desde Azure Portal, en Configuración de almacenamiento>.

Nota:

Las bases de datos de publicador y distribuidor en Azure SQL Database requieren Instancia administrada SQL. Para más información, consulte Replicación con Azure SQL Database.

Valores de código de retorno

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

Comentarios

sp_adddistpublisher se usa mediante 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_adddistpublisher.