Condividi tramite


Configurazione della pubblicazione e della distribuzione

In questo argomento viene descritto come configurare la pubblicazione e la distribuzione in SQL Server 2012 by using SQL Server Management Studio, Transact-SQL o RMO (Replication Management Objects).

Contenuto dell'argomento

  • Prima di iniziare:

    Sicurezza

  • Per configurare la pubblicazione e la distribuzione, utilizzando:

    SQL Server Management Studio

    Transact-SQL

    Oggetti RMO (Replication Management Objects)

Prima di iniziare

Sicurezza

Per ulteriori informazioni, vedere Distribuzione sicura (replica).

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Utilizzo di SQL Server Management Studio

Configurare la distribuzione mediante la Creazione guidata nuova pubblicazione o la Configurazione guidata distribuzione. Dopo la configurazione iniziale del database di distribuzione, è possibile visualizzare e modificare le proprietà nella finestra di dialogo Proprietà database di distribuzione - <Database di distribuzione>. Utilizzare la Configurazione guidata distribuzione se si desidera configurare un database di distribuzione in modo che i membri dei ruoli predefiniti del database db_owner possano creare pubblicazioni o per configurare un server di distribuzione remoto che non è un server di pubblicazione.

Per configurare la distribuzione

  1. In Microsoft SQL Server Management Studio, connettersi al server che diventerà il database di distribuzione (in molti casi, il database di distribuzione e quello di pubblicazione coincidono) ed espandere il nodo del server.

  2. Fare clic con il pulsante destro del mouse sulla cartella Replica e quindi fare clic su Configura distribuzione.

  3. Eseguire i vari passaggi della Configurazione guidata distribuzione per:

    • Selezionare un server di distribuzione. Per utilizzare un database di distribuzione locale, selezionare <ServerName>, che fungerà da database di distribuzione per se stesso. Verranno creati un database di distribuzione e un log. Per utilizzare un server di distribuzione remoto, selezionare Usa il server seguente come server di distribuzione e quindi specificare un server. È necessario che il server sia già configurato come server di distribuzione e che il server di pubblicazione sia abilitato per l'utilizzo del server di distribuzione. Per ulteriori informazioni, vedere Abilitazione di un server di pubblicazione remoto in un database di distribuzione (SQL Server Management Studio).

      Se si seleziona un server di distribuzione remoto, è necessario immettere la password nella pagina Password amministrativa per le connessioni effettuate dal server di pubblicazione a quello di distribuzione. Questa password deve corrispondere a quella specificata quando il server di pubblicazione è stato attivato nel server di distribuzione remoto.

    • Specificare una cartella snapshot radice per un server di distribuzione locale. La cartella snapshot è semplicemente una directory designata come condivisione. Gli agenti che eseguono letture e scritture in questa cartella devono disporre di autorizzazioni sufficienti per accedervi. Ogni server di pubblicazione che utilizza questo server di distribuzione crea una cartella nella cartella radice e ogni pubblicazione crea cartelle nella cartella del server di pubblicazione per l'archiviazione dei file snapshot. Per ulteriori informazioni sulle impostazioni di sicurezza appropriate per la cartella, vedere Sicurezza della cartella snapshot.

    • Specificare il database di distribuzione (per un server di distribuzione locale). Nel database di distribuzione vengono archiviati i metadati e i dati di cronologia per tutti i tipi di replica e le transazioni per la replica transazionale.

    • Facoltativamente, consentire ad altri server di pubblicazione di utilizzare il server di distribuzione. Se viene consentito ad altri server di pubblicazione di utilizzare il server di distribuzione, è necessario immettere la password nella pagina Password server di distribuzione per le connessioni effettuate da questi server di pubblicazione al server di distribuzione.

    • Facoltativamente, creare lo script delle impostazioni di configurazione. Per ulteriori informazioni, vedere Creazione di script di replica.

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Utilizzo di Transact-SQL

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 Microsoft SQL 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 (Transact-SQL)

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 database di distribuzione locale viene specificato utilizzando variabili di scripting. La pubblicazione e la distribuzione della replica possono essere configurate a livello di programmazione tramite le stored procedure di replica.

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

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

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Utilizzo di RMO (Replication Management Objects)

Per configurare la pubblicazione e la distribuzione su un singolo server

  1. Creare una connessione al server tramite la classe ServerConnection.

  2. Creare un'istanza della classe ReplicationServer. Passare il valore di ServerConnection ottenuto al passaggio 1.

  3. Creare un'istanza della classe DistributionDatabase.

  4. Impostare la proprietà Name sul nome del database e la proprietà ConnectionContext sul valore di ServerConnection ottenuto al passaggio 1.

  5. Installare il server di distribuzione chiamando il metodo InstallDistributor. Passare l'oggetto DistributionDatabase ottenuto al passaggio 3.

  6. Creare un'istanza della classe DistributionPublisher.

  7. Impostare le proprietà seguenti di DistributionPublisher:

  8. Chiamare il metodo Create.

Per configurare la pubblicazione e la distribuzione utilizzando un server di distribuzione remoto

  1. Creare una connessione al server di distribuzione remoto tramite la classe ServerConnection.

  2. Creare un'istanza della classe ReplicationServer. Passare il valore di ServerConnection ottenuto al passaggio 1.

  3. Creare un'istanza della classe DistributionDatabase.

  4. Impostare la proprietà Name sul nome del database e la proprietà ConnectionContext sul valore di ServerConnection ottenuto al passaggio 1.

  5. Installare il server di distribuzione chiamando il metodo InstallDistributor. Specificare una password sicura (utilizzata dal server di pubblicazione per la connessione al server di distribuzione remoto) e l'oggetto DistributionDatabase ottenuto al passaggio 3. Per ulteriori informazioni, vedere Sicurezza del database di distribuzione.

    Nota sulla sicurezzaNota sulla sicurezza

    Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione. Se è necessario archiviare le credenziali, utilizzare i servizi di crittografia offerti da Microsoft Windows .NET Framework.

  6. Creare un'istanza della classe DistributionPublisher.

  7. Impostare le proprietà seguenti di DistributionPublisher:

  8. Chiamare il metodo Create.

  9. Creare una connessione al server di pubblicazione locale tramite la classe ServerConnection.

  10. Creare un'istanza della classe ReplicationServer. Passare il valore di ServerConnection ottenuto al passaggio 9.

  11. Chiamare il metodo InstallDistributor. Passare il nome e la password del server di distribuzione remoto specificati al passaggio 5.

    Nota sulla sicurezzaNota sulla sicurezza

    Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione. Se è necessario archiviare le credenziali, utilizzare i servizi di crittografia offerti da Windows .NET Framework.

Esempio (RMO)

È possibile configurare a livello di programmazione la pubblicazione e la distribuzione della replica utilizzando gli oggetti RMO (Replication Management Objects).

         // Set the server and database names
            string distributionDbName = "distribution";
            string publisherName = publisherInstance;
            string publicationDbName = "AdventureWorks2012";

            DistributionDatabase distributionDb;
            ReplicationServer distributor;
            DistributionPublisher publisher;
            ReplicationDatabase publicationDb;

            // Create a connection to the server using Windows Authentication.
            ServerConnection conn = new ServerConnection(publisherName);

            try
            {
                // Connect to the server acting as the Distributor 
                // and local Publisher.
                conn.Connect();

                // Define the distribution database at the Distributor,
                // but do not create it now.
                distributionDb = new DistributionDatabase(distributionDbName, conn);
                distributionDb.MaxDistributionRetention = 96;
                distributionDb.HistoryRetention = 120;

                // Set the Distributor properties and install the Distributor.
                // This also creates the specified distribution database.
                distributor = new ReplicationServer(conn);
                distributor.InstallDistributor((string)null, distributionDb);

                // Set the Publisher properties and install the Publisher.
                publisher = new DistributionPublisher(publisherName, conn);
                publisher.DistributionDatabase = distributionDb.Name;
                publisher.WorkingDirectory = @"\\" + publisherName + @"\repldata";
                publisher.PublisherSecurity.WindowsAuthentication = true;
                publisher.Create();

                // Enable AdventureWorks2012 as a publication database.
                publicationDb = new ReplicationDatabase(publicationDbName, conn);

                publicationDb.EnabledTransPublishing = true;
                publicationDb.EnabledMergePublishing = true;
            }
            catch (Exception ex)
            {
                // Implement appropriate error handling here.
                throw new ApplicationException("An error occured when installing distribution and publishing.", ex);
            }
            finally
            {
                conn.Disconnect();
            }
' Set the server and database names
Dim distributionDbName As String = "distribution"
Dim publisherName As String = publisherInstance
Dim publicationDbName As String = "AdventureWorks2012"

Dim distributionDb As DistributionDatabase
Dim distributor As ReplicationServer
Dim publisher As DistributionPublisher
Dim publicationDb As ReplicationDatabase

' Create a connection to the server using Windows Authentication.
Dim conn As ServerConnection = New ServerConnection(publisherName)

Try
    ' Connect to the server acting as the Distributor 
    ' and local Publisher.
    conn.Connect()

    ' Define the distribution database at the Distributor,
    ' but do not create it now.
    distributionDb = New DistributionDatabase(distributionDbName, conn)
    distributionDb.MaxDistributionRetention = 96
    distributionDb.HistoryRetention = 120

    ' Set the Distributor properties and install the Distributor.
    ' This also creates the specified distribution database.
    distributor = New ReplicationServer(conn)
    distributor.InstallDistributor((CType(Nothing, String)), distributionDb)

    ' Set the Publisher properties and install the Publisher.
    publisher = New DistributionPublisher(publisherName, conn)
    publisher.DistributionDatabase = distributionDb.Name
    publisher.WorkingDirectory = "\\" + publisherName + "\repldata"
    publisher.PublisherSecurity.WindowsAuthentication = True
    publisher.Create()

    ' Enable AdventureWorks2012 as a publication database.
    publicationDb = New ReplicationDatabase(publicationDbName, conn)

    publicationDb.EnabledTransPublishing = True
    publicationDb.EnabledMergePublishing = True

Catch ex As Exception
    ' Implement appropriate error handling here.
    Throw New ApplicationException("An error occured when installing distribution and publishing.", ex)

Finally
    conn.Disconnect()

End Try

Icona freccia utilizzata con il collegamento Torna all'inizio[Inizio pagina]

Vedere anche

Concetti

Visualizzazione e modifica delle proprietà del server di pubblicazione e del database di distribuzione

Configurazione della pubblicazione e della distribuzione

Concetti di base relativi alle stored procedure del sistema di replica

Configurazione della distribuzione

Concetti di base relativi a RMO (Replication Management Objects)

Configurare la replica per i gruppi di disponibilità AlwaysOn (SQL Server)