Configurazione della pubblicazione e della distribuzioneConfigure Publishing and Distribution

In questo argomento viene descritto come configurare la pubblicazione e la distribuzione in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLo RMO (Replication Management Objects).This topic describes how to configure publishing and distribution in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO).

Prima di iniziare Before You Begin

Sicurezza Security

Per altre informazioni, vedere Distribuzione sicura (replica).For more information, see Secure Deployment (Replication).

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Configurare la distribuzione mediante la Creazione guidata nuova pubblicazione o la Configurazione guidata distribuzione.Configure distribution using the New Publication Wizard or the Configure Distribution Wizard. Dopo la configurazione iniziale del database di distribuzione, è possibile visualizzare e modificare le proprietà nella finestra di dialogo Proprietà database di distribuzione - <DatabaseDistribuzione>.After the Distributor is configured, view and modify properties in the Distributor Properties - <Distributor> dialog box. 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.Use the Configure Distribution Wizard if you want to configure a Distributor so that members of the db_owner fixed database roles can create publications, or because you want to configure a remote Distributor that is not a Publisher.

Per configurare la distribuzioneTo configure distribution

  1. In MicrosoftMicrosoft SQL Server Management StudioSQL 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.In MicrosoftMicrosoft SQL Server Management StudioSQL Server Management Studio, connect to the server that will be the Distributor (in many cases, the Publisher and Distributor are the same server), and then expand the server node.

  2. Fare clic con il pulsante destro del mouse sulla cartella Replica e quindi fare clic su Configura distribuzione.Right-click the Replication folder, and then click Configure Distribution.

  3. Eseguire i vari passaggi della Configurazione guidata distribuzione per:Follow the Configure Distribution Wizard to:

    • Selezionare un server di distribuzione.Select a Distributor. Per usare un database di distribuzione locale, selezionare '<NomeServer>' fungerà da database distribuzione per se stesso. Verranno creati un database di distribuzione e un log.To use a local Distributor, select '<ServerName>' will act as its own Distributor; SQL Server will create a distribution database and log. Per utilizzare un server di distribuzione remoto, selezionare Usa il server seguente come server di distribuzionee quindi specificare un server.To use a remote Distributor, select Use the following server as the Distributor, and then select a 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.The server must already be configured as a Distributor, and the Publisher must be enabled to use the Distributor. Per altre informazioni, vedere Abilitazione di un server di pubblicazione remoto in un database di distribuzione (SQL Server Management Studio).For more information, see Enable a Remote Publisher at a Distributor (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.If you select a remote Distributor, you must enter a password on the Administrative Password page for connections made from the Publisher to the Distributor. Questa password deve corrispondere a quella specificata quando il server di pubblicazione è stato attivato nel server di distribuzione remoto.This password must match the password specified when the Publisher was enabled at the remote Distributor.

    • Specificare una cartella snapshot radice per un server di distribuzione locale.Specify a root snapshot folder (for a local Distributor). 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.The snapshot folder is simply a directory that you have designated as a share; agents that read from and write to this folder must have sufficient permissions to access it. 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.Each Publisher that uses this Distributor creates a folder under the root folder, and each publication creates folders under the Publisher folder in which to store snapshot files. Per altre informazioni sulle impostazioni di sicurezza appropriate per la cartella, vedere Sicurezza della cartella snapshot.For more information on securing the folder appropriately, see Secure the Snapshot Folder.

    • Specificare il database di distribuzione (per un server di distribuzione locale).Specify the distribution database (for a local Distributor). Nel database di distribuzione vengono memorizzati metadati e dati di cronologia relativi a tutti i tipi di replica e alle transazioni per la replica transazionale.The distribution database stores metadata and history data for all types of replication and transactions for transactional replication.

    • Facoltativamente, consentire ad altri server di pubblicazione di utilizzare il server di distribuzione.Optionally enable other Publishers to use the Distributor. 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.If other Publishers are enabled to use the Distributor, you must enter a password on the Distributor Password page for connections made from these Publishers to the Distributor.

    • Facoltativamente, creare lo script delle impostazioni di configurazione.Optionally script configuration settings. Per altre informazioni, vedere Scripting Replication.For more information, see Scripting Replication.

Utilizzo di Transact-SQL Using Transact-SQL

La pubblicazione e la distribuzione della replica possono essere configurate a livello di programmazione tramite le stored procedure di replica.Replication publishing and distribution can be configured programmatically using replication stored procedures.

Per configurare la pubblicazione utilizzando un server di distribuzione localeTo configure publishing using a local distributor

  1. Eseguire sp_get_distributor (Transact-SQL) per determinare se il server è già configurato come database di distribuzione.Execute sp_get_distributor (Transact-SQL) to determine if the server is already configured as a Distributor.

    • Se il valore di installed nel set di risultati è 0, eseguire sp_adddistributor (Transact-SQL) nel database master del server di distribuzione.If the value of installed in the result set is 0, execute sp_adddistributor (Transact-SQL) at the Distributor on the master database.

    • Se il valore di distribution db installed nel set di risultati è 0, eseguire sp_adddistributiondb (Transact-SQL) nel database master del server di distribuzione.If the value of distribution db installed in the result set is 0, execute sp_adddistributiondb (Transact-SQL) at the Distributor on the master database. Specificare il nome del database di distribuzione per @database.Specify the name of the distribution database for @database. Facoltativamente, è possibile specificare il periodo di memorizzazione massimo delle transazioni per @max_distretention e il periodo di memorizzazione della cronologia per @history_retention.Optionally, you can specify the maximum transactional retention period for @max_distretention and the history retention period for @history_retention. Se viene creato un nuovo database, specificare i parametri desiderati per le relative proprietà.If a new database is being created, specify the desired database property parameters.

  2. Nel database di distribuzione, che è anche il server di pubblicazione, eseguire sp_adddistpublisher (Transact-SQL), specificando la condivisione UNC che verrà usata come cartella snapshot predefinita per @working_directory.At the Distributor, which is also the Publisher, execute sp_adddistpublisher (Transact-SQL), specifying the UNC share that will be used as default snapshot folder for @working_directory.

  3. Nel server di pubblicazione eseguire sp_replicationdboption (Transact-SQL).At the Publisher, execute sp_replicationdboption (Transact-SQL). Specificare il database da pubblicare per @dbname, il tipo di replica per @optnamee il valore true per @value.Specify the database being published for @dbname, the type of replication for @optname, and a value of true for @value.

Per configurare la pubblicazione utilizzando un server di distribuzione remotoTo configure publishing using a remote distributor

  1. Eseguire sp_get_distributor (Transact-SQL) per determinare se il server è già configurato come database di distribuzione.Execute sp_get_distributor (Transact-SQL) to determine if the server is already configured as a Distributor.

    • Se il valore di installed nel set di risultati è 0, eseguire sp_adddistributor (Transact-SQL) nel database master del server di distribuzione.If the value of installed in the result set is 0, execute sp_adddistributor (Transact-SQL) at the Distributor on the master database. Specificare una password complessa per @password.Specify a strong password for @password. Questa password per l'account distributor_admin verrà utilizzata per la connessione del server di pubblicazione al server di distribuzione.This password for the distributor_admin account will be used by the Publisher when connecting to the Distributor.

    • Se il valore di distribution db installed nel set di risultati è 0, eseguire sp_adddistributiondb (Transact-SQL) nel database master del server di distribuzione.If the value of distribution db installed in the result set is 0, execute sp_adddistributiondb (Transact-SQL) at the Distributor on the master database. Specificare il nome del database di distribuzione per @database.Specify the name of the distribution database for @database. Facoltativamente, è possibile specificare il periodo di memorizzazione massimo delle transazioni per @max_distretention e il periodo di memorizzazione della cronologia per @history_retention.Optionally, you can specify the maximum transactional retention period for @max_distretention and the history retention period for @history_retention. Se viene creato un nuovo database, specificare i parametri desiderati per le relative proprietà.If a new database is being created, specify the desired database property parameters.

  2. Nel database di distribuzione eseguire sp_adddistpublisher (Transact-SQL), specificando la condivisione UNC che verrà usata come cartella snapshot predefinita per @working_directory.At the Distributor, execute sp_adddistpublisher (Transact-SQL), specifying the UNC share that will be used as default snapshot folder for @working_directory. Se il server di distribuzione utilizza l'autenticazione di SQL ServerSQL 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 MicrosoftMicrosoft SQL ServerSQL Server per @login e @password.If the Distributor will use SQL ServerSQL Server Authentication when connecting to the Publisher, you must also specify a value of 0 for @security_mode and the MicrosoftMicrosoft SQL ServerSQL Server login information for @login and @password.

  3. Nel database master del server di pubblicazione eseguire sp_adddistributor (Transact-SQL).At the Publisher on the master database, execute sp_adddistributor (Transact-SQL). Specificare la password complessa utilizzata nel passaggio 1 per @password.Specify the strong password used in step 1 for @password. Questa password verrà utilizzata per la connessione del server di pubblicazione al server di distribuzione.This password will be used by the Publisher when connecting to the Distributor.

  4. Nel server di pubblicazione eseguire sp_replicationdboption (Transact-SQL).At the Publisher, execute sp_replicationdboption (Transact-SQL). Specificare il database da pubblicare per @dbname, il tipo di replica per @optnamee il valore true per @value.Specify the database being published for @dbname, the type of replication for @optname, and a value of true for @value.

Esempio (Transact-SQL) Example (Transact-SQL)

Nell'esempio seguente viene illustrato come configurare la pubblicazione e la distribuzione a livello di programmazione.The following example demonstrates how to configure publishing and distribution programmatically. Il nome del server da configurare come server di pubblicazione e database di distribuzione locale viene specificato utilizzando variabili di scripting.In this example, the name of the server that is being configured as a publisher and a local distributor is supplied using scripting variables. La pubblicazione e la distribuzione della replica possono essere configurate a livello di programmazione tramite le stored procedure di replica.Replication publishing and distribution can be configured programmatically using replication stored procedures.

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

Utilizzo di RMO (Replication Management Objects) Using Replication Management Objects (RMO)

Per configurare la pubblicazione e la distribuzione su un singolo serverTo configure publishing and distribution on a single server

  1. Creare una connessione al server tramite la classe ServerConnection.Create a connection to the server by using the ServerConnection class.

  2. Creare un'istanza della classe ReplicationServer.Create an instance of the ReplicationServer class. Passare ServerConnection dal passaggio 1.Pass the ServerConnection from step 1.

  3. Creare un'istanza della classe DistributionDatabase.Create an instance of the DistributionDatabase class.

  4. Impostare le proprietà Name sul nome del database e impostare la proprietà ConnectionContext su ServerConnection dal passaggio 1.Set the Name property to the database name and set the ConnectionContext property to the ServerConnection from step 1.

  5. Installare il database di distribuzione chiamando il metodo InstallDistributor.Install the Distributor by calling the InstallDistributor method. Passare l'oggetto DistributionDatabase dal passaggio 3.Pass the DistributionDatabase object from step 3.

  6. Creare un'istanza della classe DistributionPublisher.Create an instance of the DistributionPublisher class.

  7. Impostare le proprietà seguenti di DistributionPublisher:Set the following properties of DistributionPublisher:

  8. Chiamare il metodo Create.Call the Create method.

Per configurare la pubblicazione e la distribuzione utilizzando un server di distribuzione remotoTo configure publishing and distribution using a remote Distributor

  1. Creare una connessione al server di distribuzione remoto tramite la classe ServerConnection.Create a connection to the remote Distributor server by using the ServerConnection class.

  2. Creare un'istanza della classe ReplicationServer.Create an instance of the ReplicationServer class. Passare ServerConnection dal passaggio 1.Pass the ServerConnection from step 1.

  3. Creare un'istanza della classe DistributionDatabase.Create an instance of the DistributionDatabase class.

  4. Impostare le proprietà Name sul nome del database e impostare la proprietà ConnectionContext su ServerConnection dal passaggio 1.Set the Name property to the database name, and set the ConnectionContext property to the ServerConnection from step 1.

  5. Installare il database di distribuzione chiamando il metodo InstallDistributor.Install the Distributor by calling the InstallDistributor method. Specificare una password sicura (usata dal server di pubblicazione per la connessione al server di distribuzione remoto) e l'oggetto DistributionDatabase dal passaggio 3.Specify a secure password (used by the Publisher when connecting to the remote Distributor) and the DistributionDatabase object from step 3. Per altre informazioni, vedere Sicurezza del database di distribuzione.For more information, see Secure the Distributor.

    IMPORTANTEIMPORTANT!! Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione.When possible, prompt users to enter security credentials at runtime. Se è necessario archiviare le credenziali, utilizzare i servizi di crittografia offerti da MicrosoftMicrosoft Windows .NET Framework.If you must store credentials, use the cryptographic services provided by the MicrosoftMicrosoft Windows .NET Framework.

  6. Creare un'istanza della classe DistributionPublisher.Create an instance of the DistributionPublisher class.

  7. Impostare le proprietà seguenti di DistributionPublisher:Set the following properties of DistributionPublisher:

  8. Chiamare il metodo Create.Call the Create method.

  9. Creare una connessione al server di pubblicazione locale tramite la classe ServerConnection.Create a connection to the local Publisher server by using the ServerConnection class.

  10. Creare un'istanza della classe ReplicationServer.Create an instance of the ReplicationServer class. Passare l'oggetto ServerConnection dal passaggio 9.Pass the ServerConnection from step 9.

  11. Chiamare il metodo InstallDistributor.Call the InstallDistributor method. Passare il nome e la password del server di distribuzione remoto specificati al passaggio 5.Pass the name of the remote Distributor and the password for the remote Distributor specified in step 5.

    IMPORTANTEIMPORTANT!! Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione.When possible, prompt users to enter security credentials at runtime. Se è necessario archiviare le credenziali, utilizzare i servizi di crittografia offerti da Windows .NET Framework.If you must store credentials, use the cryptographic services provided by the Windows .NET Framework.

Esempio (RMO) Example (RMO)

È possibile configurare a livello di programmazione la pubblicazione e la distribuzione della replica utilizzando gli oggetti RMO (Replication Management Objects).You can programmatically configure replication publishing and distribution by using Replication Management Objects (RMO).

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

Vedere ancheSee Also

Visualizzare e modificare le proprietà del server di pubblicazione e del database di distribuzione View and Modify Distributor and Publisher Properties
Replication System Stored Procedures Concepts Replication System Stored Procedures Concepts
Configura distribuzione Configure Distribution
Replication Management Objects Concepts Replication Management Objects Concepts
Configurare la replica per i gruppi di disponibilità AlwaysOn (SQL Server) Configure Replication for Always On Availability Groups (SQL Server)