sp_adddistpublisher (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

Configura un server di pubblicazione per l'utilizzo del database di distribuzione specificato. Questa stored procedure viene eseguita in qualsiasi database del server di distribuzione. Le stored procedure sp_adddistributor e sp_adddistributiondb devono essere state eseguite prima di utilizzare questa stored procedure.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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' ]
[ ; ]

Argomenti

[ @publisher = ] N'publisher'

Nome del server di pubblicazione. @publisher è sysname, senza impostazione predefinita.

Nota

Il nome del server può essere specificato come <Hostname>,<PortNumber> per un'istanza predefinita o <Hostname>\<InstanceName>,<PortNumber> per un'istanza denominata. Specificare il numero di porta per la connessione quando SQL Server viene distribuito in Linux o Windows con una porta personalizzata e il servizio browser è disabilitato. L'uso di numeri di porta personalizzati per il server di distribuzione remoto si applica a SQL Server 2019 (15.x) e versioni successive.

[ @distribution_db = ] N'distribution_db'

Nome del database di distribuzione. @distribution_db è sysname, senza impostazione predefinita. Questo parametro viene utilizzato dagli agenti di replica per la connessione al server di pubblicazione.

[ @security_mode = ] security_mode

Modalità di sicurezza implementata. Questo parametro viene usato solo dagli agenti di replica per connettersi al server di pubblicazione per le sottoscrizioni ad aggiornamento in coda o con un server di pubblicazione non SQL Server. @security_mode è int e può essere uno di questi valori.

valore Descrizione
0 Gli agenti di replica nel server di distribuzione usano l'autenticazione di SQL Server per connettersi al server di pubblicazione.
1 (predefinito) Gli agenti di replica nel server di distribuzione si connettono al server di pubblicazione tramite l'autenticazione di Windows.

[ @login = ] N'login'

Account di accesso. Questo parametro è obbligatorio se security_mode è 0. @login è sysname, con il valore predefinito NULL. Questo parametro viene utilizzato dagli agenti di replica per la connessione al server di pubblicazione.

[ @password = ] N'password'

Password. @password è sysname, con un valore predefinito .NULL Questo parametro viene utilizzato dagli agenti di replica per la connessione al server di pubblicazione.

Importante

Non usare una password vuota. Usare una password complessa.

[ @working_directory = ] N'working_directory'

Nome della directory di lavoro utilizzata per archiviare i file dei dati e di schema per la pubblicazione @working_directory è nvarchar(255) e per impostazione predefinita viene ReplData cartella per questa istanza di SQL Server. Ad esempio: C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.1\ReplData. Il nome deve essere specificato in formato UNC.

Per database SQL di Azure, usare \\<storage_account>.file.core.windows.net\<share>.

[ @trusted = ] N'trusted'

@trusted è deprecato e viene fornito solo per la compatibilità con le versioni precedenti. @trusted è nvarchar(5), con il valore predefinito false. L'impostazione di questo parametro su qualsiasi elemento, ma false genera un errore.

[ @encrypted_password = ] encrypted_password

L'impostazione di questo parametro non è più supportata. @encrypted_password è bit, con un valore predefinito .0 L'impostazione di questo parametro su 1 genera un errore.

[ @thirdparty_flag = ] thirdparty_flag

Specifica quando il server di pubblicazione è SQL Server. @thirdparty_flag è bit e può essere uno dei valori seguenti.

valore Descrizione
0 (predefinito) Database di SQL Server.
1 Database diverso da SQL Server.

[ @publisher_type = ] N'publisher_type'

Specifica il tipo di server di pubblicazione quando il server di pubblicazione non è SQL Server. @publisher_type è sysname e può essere uno dei valori seguenti.

valore Descrizione
MSSQLSERVER (predefinito) Specifica un server di pubblicazione di SQL Server.
ORACLE Specifica un server di pubblicazione Oracle standard.
ORACLE GATEWAY Specifica un server di pubblicazione Oracle Gateway.

Per altre informazioni sulle differenze tra un server di pubblicazione Oracle e un server di pubblicazione Oracle Gateway, vedere Configurare un server di pubblicazione Oracle.

[ @storage_connection_string = ] N'storage_connection_string'

Obbligatorio per database SQL di Azure. @storage_connection_string è nvarchar(255), con il valore predefinito NULL. Usare la chiave di accesso dal portale di Azure, in Impostazioni di archiviazione>.

Nota

I database del server di pubblicazione e del server di distribuzione in database SQL di Azure richiedono Istanza gestita di SQL. Per altre informazioni, vedere Replica con database SQL di Azure.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_adddistpublisher viene usato dalla replica snapshot, dalla replica transazionale e dalla replica di tipo merge.

Esempi

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

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin possono eseguire sp_adddistpublisher.