Condividi tramite


sp_adddistributor (Transact-SQL)

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

Crea una voce nella tabella sys.servers (se non ne esiste una), contrassegna la voce del server come server di distribuzione e archivia le informazioni sulle proprietà. Questa stored procedure viene eseguita nel server di distribuzione del master database per registrare e contrassegnare il server come server di distribuzione. Nel caso di un server di distribuzione remoto, viene eseguito anche nel server di pubblicazione dal master database per registrare il server di distribuzione remoto.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

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

Argomenti

[ @distributor = ] N'distributor'

Nome del server di distribuzione. @distributor è sysname, senza impostazione predefinita. Questo parametro viene utilizzato solo per la configurazione di un server di distribuzione remoto. Aggiunge voci per le proprietà del server di distribuzione nella msdb..MSdistributor tabella.

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.

[ @heartbeat_interval = ] heartbeat_interval

Periodo massimo in minuti durante il quale un agente può non registrare alcun messaggio sullo stato. @heartbeat_interval è int, con un valore predefinito di 10 minuti. Viene creato un processo di SQL Server Agent che viene eseguito in base a questo intervallo per controllare lo stato degli agenti di replica in esecuzione.

[ @password = ] N'password'

Password dell'account di accesso distributor_admin . @password è sysname, con un valore predefinito .NULL Se la password è NULL o una stringa vuota, @password viene reimpostata su un valore casuale. La password deve essere configurata quando viene aggiunto il primo server di distribuzione remoto. distributor_admin account di accesso e @password vengono archiviati per la voce del server collegato usata per una connessione RPC del server di distribuzione, incluse le connessioni locali. Se il server di distribuzione è locale, la password per distributor_admin viene impostata su un nuovo valore. Per i server di pubblicazione con un server di distribuzione remoto, è necessario specificare lo stesso valore per @password durante l'esecuzione sp_adddistributor sia nel server di pubblicazione che nel server di distribuzione. sp_changedistributor_password può essere usato per modificare la password del server di distribuzione.

Importante

Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione. Se è necessario archiviare le credenziali in un file script, è fondamentale proteggere il file per evitare accessi non autorizzati.

[ @from_scripting = ] from_scripting

@from_scripting è bit, con il valore predefinito 0. Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_adddistributor viene usato nella replica snapshot, nella replica transazionale e nella 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_adddistributor.