Condividi tramite


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

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

Questo argomento descrive come visualizzare e modificare le proprietà dei server di pubblicazione e distribuzione in SQL Server tramite SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO).

Contenuto dell'articolo

Prima di iniziare

Consigli

  • Per i server di pubblicazione che eseguono versioni precedenti a Microsoft SQL Server 2005 (9.x), un utente nel ruolo predefinito del server sysadmin può registrare i Sottoscrittori nella pagina Sottoscrittori. A partire da SQL Server 2005 (9.x), non è più necessario registrare esplicitamente i Sottoscrittori per la replica.

Sicurezza

Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione.

Utilizzo di SQL Server Management Studio

Per visualizzare e modificare le proprietà del database di distribuzione

  1. Connettiti al Distributore in SQL Server Management Studio e poi espandi il nodo server.

  2. Fare clic con il pulsante destro del mouse sulla cartella Replica e quindi scegliere Proprietà server di distribuzione.

  3. Visualizza e modifica le proprietà nella finestra di dialogo Proprietà database di distribuzione - <DatabaseDistribuzione>.

    • Per visualizzare e modificare le proprietà di un database di distribuzione, fare clic sul pulsante delle proprietà (...) relativo al database nella pagina Generale della finestra di dialogo.

    • Per visualizzare e modificare le proprietà del server di pubblicazione associato al database di distribuzione, fare clic sul pulsante delle proprietà (...) relativo al server di pubblicazione nella pagina Server di pubblicazione della finestra di dialogo.

    • Per accedere ai profili degli agenti di replica, fare clic sul pulsante Impostazioni predefinite profili nella pagina Generale della finestra di dialogo. Per altre informazioni, vedere Replication Agent Profiles.

    • Per modificare la password dell'account utilizzato quando stored procedure di amministrazione vengono eseguite sul server di pubblicazione e aggiornano le informazioni sul server di distribuzione, immettere una nuova password nelle caselle Password e Conferma password della pagina Server di pubblicazione della finestra di dialogo. Per altre informazioni, vedere Sicurezza del database di distribuzione.

  4. Se necessario, modificare le proprietà e quindi fare clic su OK.

Per visualizzare e modificare le proprietà del server di pubblicazione

  1. Connettiti al server di pubblicazione in SQL Server Management Studio e poi espandi il nodo server.

  2. Fare clic con il pulsante destro del mouse sulla cartella Replica e quindi scegliere Proprietà server di pubblicazione.

  3. Visualizza e modifica le proprietà nella finestra di dialogo Proprietà server di pubblicazione - <ServerPubblicazione>.

    • Un utente nel ruolo predefinito del server sysadmin può abilitare i database per la replica nella pagina Database di pubblicazione . L'abilitazione di un database non ne comporta la pubblicazione, ma piuttosto consente a un utente nel ruolo predefinito del database db_owner per il database in questione di creare una o più pubblicazioni nel database.
  4. Se necessario, modificare le proprietà e quindi fare clic su OK.

Utilizzo di Transact-SQL

È possibile visualizzare le proprietà del server di pubblicazione e del database di distribuzione a livello di programmazione utilizzando le stored procedure di replica.

Per visualizzare le proprietà del database di distribuzione

  1. Eseguire sp_helpdistributor per restituire informazioni sul server di distribuzione, il database di distribuzione e la directory di lavoro.

  2. Eseguire sp_helpdistributiondb per restituire le proprietà di un database di distribuzione specificato.

Per modificare le proprietà del server di distribuzione e del database di distribuzione

  1. Nel server di distribuzione eseguire sp_changedistributor_property per modificare le proprietà del server di distribuzione.

  2. Nel server di distribuzione eseguire sp_changedistributiondb per modificare le proprietà del database di distribuzione.

  3. Nel database di distribuzione eseguire sp_changedistributor_password per modificare la password del database 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 di script, proteggere tale file per impedire l'accesso non autorizzato.

  4. Nel database di distribuzione eseguire sp_changedistpublisher per modificare le proprietà di un server di pubblicazione utilizzando il database di distribuzione.

Esempi (Transact-SQL)

Lo script di Transact-SQL di esempio riportato di seguito restituisce informazioni sul database di distribuzione e sul database di distribuzione.

-- View information about the Distributor, distribution database, 
-- working directory, and SQL Server Agent user account. 
USE master
EXEC sp_helpdistributor;
GO
-- View information about the specified distribution database. 
USE distribution
EXEC sp_helpdistributiondb;
GO

In questo esempio vengono modificati i periodi di memorizzazione per il server di distribuzione, la password utilizzata per la connessione al server di distribuzione e l'intervallo con cui il server di distribuzione verifica lo stato di diversi agenti di replica, noto anche come intervallo di heartbeat.

Importante

Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione. Se è necessario archiviare le credenziali in un file di script, proteggere tale file per impedire l'accesso non autorizzato.


-- Change the heartbeat interval at the Distributor to 5 minutes. 
USE master 
exec sp_changedistributor_property 
    @property = N'heartbeat_interval', 
    @value = 5;
GO
DECLARE @distributionDB AS sysname;
SET @distributionDB = N'distribution';

-- Change the history retention period to 24 hours and the
-- maximum retention period to 48 hours.  
USE distribution
EXEC sp_changedistributiondb @distributionDB, N'history_retention', 24
EXEC sp_changedistributiondb @distributionDB, N'max_distretention', 48
GO
-- Change the password on the Distributor. 
-- To avoid storing the password in the script file, the value is passed 
-- into SQLCMD as a scripting variable. 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".
USE master
EXEC sp_changedistributor_password $(Password)
GO

Utilizzo di RMO (Replication Management Objects)

Per visualizzare e modificare le proprietà del database di distribuzione

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

  2. Creare un'istanza della classe ReplicationServer. Passare l'oggetto ServerConnection indicato nel passaggio 1.

  3. (Facoltativo) Controllare la proprietà IsDistributor per verificare che il server attualmente connesso sia un server di distribuzione.

  4. Chiamare il metodo Load per ottenere le proprietà dal server.

  5. (Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una o più proprietà del server di distribuzione che è possibile impostare sull'oggetto ReplicationServer .

  6. (Facoltativo) Se la proprietà CachePropertyChanges sull'oggetto ReplicationServer è impostata su true, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server.

Per visualizzare e modificare le proprietà del database di distribuzione

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

  2. Creare un'istanza della classe DistributionDatabase. Specificare la proprietà relativa al nome e passare l'oggetto ServerConnection indicato nel passaggio 1.

  3. Chiamare il metodo LoadProperties per ottenere le proprietà dal server. Se il metodo restituisce false, il database con il nome specificato non esiste nel server.

  4. (Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una delle proprietà dell'oggetto DistributionDatabase che è possibile impostare.

  5. (Facoltativo) Se la proprietà CachePropertyChanges sull'oggetto DistributionDatabase è impostata su true, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server.

Per visualizzare e modificare le proprietà del server di pubblicazione

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

  2. Creare un'istanza della classe DistributionPublisher. Specificare la proprietà Name e passare l'oggetto ServerConnection indicato nel passaggio 1.

  3. (Facoltativo) Per modificare le proprietà, specificare un nuovo valore per una delle proprietà dell'oggetto DistributionPublisher che è possibile impostare.

  4. (Facoltativo) Se la proprietà CachePropertyChanges sull'oggetto DistributionPublisher è impostata su true, chiamare il metodo CommitPropertyChanges per eseguire il commit delle modifiche nel server.

Per modificare la password per la connessione amministrativa dal server di pubblicazione al database di distribuzione

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

  2. Creare un'istanza della classe ReplicationServer.

  3. Impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 1.

  4. Chiamare il metodo Load per recuperare le proprietà dell'oggetto.

  5. Chiamare il metodo ChangeDistributorPassword . Passare il nuovo valore della password per il parametro password .

    Importante

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

  6. (Facoltativo) Eseguire i passaggi seguenti per modificare la password in ogni server di pubblicazione remoto che utilizza questo server di distribuzione:

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

    2. Creare un'istanza della classe ReplicationServer.

    3. Impostare la proprietà ConnectionContext sulla connessione creata nel passaggio 6a.

    4. Chiamare il metodo Load per recuperare le proprietà dell'oggetto.

    5. Chiamare il metodo ChangeDistributorPassword . Passare il nuovo valore della password indicato nel passaggio 5 per il parametro password .

Esempio (RMO)

In questo esempio viene illustrato come modificare le proprietà del database di distribuzione e del database di distribuzione.

Importante

Per evitare di archiviare le credenziali del codice, la nuova password del server di distribuzione viene specificata in fase di esecuzione.

// Set the Distributor and distribution database names.
string distributionDbName = "distribution";
string distributorName = publisherInstance;

ReplicationServer distributor;
DistributionDatabase distributionDb;

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

try
{
    // Open the connection. 
    conn.Connect();

    distributor = new ReplicationServer(conn);

    // Load Distributor properties, if it is installed.
    if (distributor.LoadProperties())
    {
        // Password supplied at runtime.
        distributor.ChangeDistributorPassword(password);
        distributor.AgentCheckupInterval = 5;

        // Save changes to the Distributor properties.
        distributor.CommitPropertyChanges();
    }
    else
    {
        throw new ApplicationException(
            String.Format("{0} is not a Distributor.", publisherInstance));
    }

    // Create an object for the distribution database 
    // using the open Distributor connection.
    distributionDb = new DistributionDatabase(distributionDbName, conn);

    // Change distribution database properties.
    if (distributionDb.LoadProperties())
    {
        // Change maximum retention period to 48 hours and history retention 
        // period to 24 hours.
        distributionDb.MaxDistributionRetention = 48;
        distributionDb.HistoryRetention = 24;

        // Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges();
    }
    else
    {
        // Do something here if the distribution database does not exist.
    }
}
catch (Exception ex)
{
    // Implement the appropriate error handling here. 
    throw new ApplicationException("An error occurred when changing Distributor " +
        " or distribution database properties.", ex);
}
finally
{
    conn.Disconnect();
}
' Set the Distributor and distribution database names.
Dim distributionDbName As String = "distribution"
Dim distributorName As String = publisherInstance

Dim distributor As ReplicationServer
Dim distributionDb As DistributionDatabase

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

Try
    ' Open the connection. 
    conn.Connect()

    distributor = New ReplicationServer(conn)

    ' Load Distributor properties, if it is installed.
    If distributor.LoadProperties() Then
        ' Password supplied at runtime.
        distributor.ChangeDistributorPassword(password)
        distributor.AgentCheckupInterval = 5

        ' Save changes to the Distributor properties.
        distributor.CommitPropertyChanges()
    Else
        Throw New ApplicationException( _
            String.Format("{0} is not a Distributor.", publisherInstance))
    End If

    ' Create an object for the distribution database 
    ' using the open Distributor connection.
    distributionDb = New DistributionDatabase(distributionDbName, conn)

    ' Change distribution database properties.
    If distributionDb.LoadProperties() Then
        ' Change maximum retention period to 48 hours and history retention 
        ' period to 24 hours.
        distributionDb.MaxDistributionRetention = 48
        distributionDb.HistoryRetention = 24

        ' Save changes to the distribution database properties.
        distributionDb.CommitPropertyChanges()
    Else
        ' Do something here if the distribution database does not exist.
    End If
Catch ex As Exception
    ' Implement the appropriate error handling here. 
    Throw New ApplicationException("An error occurred when changing Distributor " + _
        " or distribution database properties.", ex)
Finally
    conn.Disconnect()
End Try