Condividi tramite


Procedura: Configurazione della pubblicazione e della distribuzione (programmazione Transact-SQL della replica)

La pubblicazione e la distribuzione della replica possono essere configurate a livello di programmazione tramite le stored procedure di replica.

Per configurare la pubblicazione utilizzando un server di distribuzione locale

  1. Eseguire sp_get_distributor (Transact-SQL) per determinare se il server è già configurato come server di distribuzione.

    • Se il valore di installed nel set di risultati è 0, eseguire sp_adddistributor (Transact-SQL) nel database master del server di distribuzione.

    • Se il valore di distribution db installed nel set di risultati è 0, eseguire sp_adddistributiondb (Transact-SQL) nel database master del server di distribuzione. Specificare il nome del database di distribuzione per @database. Facoltativamente, è possibile specificare il periodo di memorizzazione massimo delle transazioni per @max_distretention e il periodo di memorizzazione della cronologia per @history_retention. Se viene creato un nuovo database, specificare i parametri desiderati per le relative proprietà.

  2. Nel server di distribuzione, che è anche il server di pubblicazione, eseguire sp_adddistpublisher (Transact-SQL), specificando la condivisione UNC che verrà utilizzata come cartella snapshot predefinita per @working_directory.

  3. Nel server di pubblicazione eseguire sp_replicationdboption (Transact-SQL). Specificare il database da pubblicare per @dbname, il tipo di replica per @optname e il valore true per @value.

Per configurare la pubblicazione utilizzando un server di distribuzione remoto

  1. Eseguire sp_get_distributor (Transact-SQL) per determinare se il server è già configurato come server di distribuzione.

    • Se il valore di installed nel set di risultati è 0, eseguire sp_adddistributor (Transact-SQL) nel database master del server di distribuzione. Specificare una password complessa per @password. Questa password per l'account distributor_admin verrà utilizzata per la connessione del server di pubblicazione al server di distribuzione.

    • Se il valore di distribution db installed nel set di risultati è 0, eseguire sp_adddistributiondb (Transact-SQL) nel database master del server di distribuzione. Specificare il nome del database di distribuzione per @database. Facoltativamente, è possibile specificare il periodo di memorizzazione massimo delle transazioni per @max_distretention e il periodo di memorizzazione della cronologia per @history_retention. Se viene creato un nuovo database, specificare i parametri desiderati per le relative proprietà.

  2. Nel server di distribuzione eseguire sp_adddistpublisher (Transact-SQL), specificando la condivisione UNC che verrà utilizzata come cartella snapshot predefinita per @working_directory. Se il server di distribuzione utilizza l'autenticazione di SQL Server per la connessione al server di pubblicazione, è inoltre necessario specificare il valore 0 per @security_mode e le informazioni sull'account di accesso di MicrosoftSQL Server per @login e @password.

  3. Nel database master del server di pubblicazione eseguire sp_adddistributor (Transact-SQL). Specificare la password complessa utilizzata nel passaggio 1 per @password. Questa password verrà utilizzata per la connessione del server di pubblicazione al server di distribuzione.

  4. Nel server di pubblicazione eseguire sp_replicationdboption (Transact-SQL). Specificare il database da pubblicare per @dbname, il tipo di replica per @optname e il valore true per @value.

Esempio

Nell'esempio seguente viene illustrato come configurare la pubblicazione e la distribuzione a livello di programmazione. Il nome del server da configurare come server di pubblicazione e server di distribuzione locale viene specificato utilizzando variabili di scripting.

-- 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'AdventureWorks'; 

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