Utilizzo dei profili agenti di replica

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Questo argomento descrive come lavorare con profili di agente di replica in SQL Server tramite SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO). Il comportamento di ogni agente di replica è controllato da un set di parametri che è possibile impostare tramite i profili agenti. Ogni agente dispone di un profilo predefinito e alcuni anche di profili predefiniti aggiuntivi. In un momento specifico, per un agente è attivo un solo profilo.

Contenuto dell'articolo

Utilizzo di SQL Server Management Studio

Per accedere alla finestra di dialogo Profili agenti da SQL Server Management Studio

  1. Nella pagina Generale della finestra di dialogo Proprietà database di distribuzione - <Distributore>, fare clic su Impostazioni predefinite profili.

Per accedere alla finestra di dialogo Profili agenti da Monitoraggio replica

  • Per aprire la finestra di dialogo per tutti gli agenti, fare clic con il pulsante destro del mouse su un server di pubblicazione e quindi scegliere Profili agenti.

  • Per aprire la finestra di dialogo per un singolo agente:

    1. Espandere un gruppo di server di pubblicazione nel riquadro a sinistra di Monitoraggio replica, espandere un server di pubblicazione e quindi fare clic su una pubblicazione.

    2. Per i profili dell'agente di distribuzione e dell'agente di merge, fare clic con il pulsante destro del mouse su una sottoscrizione nella scheda Tutte le sottoscrizioni e quindi scegliere Profilo agente. Per gli altri agenti, fare clic con il pulsante destro del mouse sull'agente nella scheda Agenti , quindi scegliere Profilo agente.

Per specificare un profilo per un agente

  1. Se nella finestra di dialogo Profili agenti vengono visualizzati i profili di più agenti, selezionare un agente.

  2. Selezionare un profilo nella colonna Predefinito per i nuovi agenti della griglia Profili agenti . Per impostazione predefinita, il profilo viene applicato solo agli agenti per le nuove pubblicazioni e sottoscrizioni.

  3. Per specificare che tutti gli agenti del tipo selezionato per le pubblicazioni o le sottoscrizioni esistenti devono utilizzare questo profilo, fare clic su Modifica agenti esistenti.

Per visualizzare e modificare i parametri associati a un profilo

  1. Se nella finestra di dialogo Profili agenti vengono visualizzati i profili di più agenti, selezionare un agente.

  2. Fare clic sul pulsante delle proprietà (...) accanto a un profilo.

  3. Visualizzare i parametri e i valori nella finestra di dialogo Proprietà profilo <NomeProfilo>.

    • È possibile modificare i parametri nei profili definiti dall'utente, ma non quelli nei profili di sistema predefiniti.

    • Per visualizzare tutti i parametri per un agente, deselezionare la casella di controllo Mostra solo i parametri utilizzati in questo profilo . Per informazioni sui parametri degli agenti, vedere i collegamenti alla fine di questo argomento.

  4. Fare clic su Close.

Per creare un profilo definito dall'utente

  1. Se nella finestra di dialogo Profili agenti vengono visualizzati i profili di più agenti, selezionare un agente.

  2. Fai clic su Nuovo.

  3. Nella finestra di dialogo di inizializzazione Nuovo profilo agente selezionare un profilo esistente su cui basare il nuovo profilo.

  4. Nella finestra di dialogo Nuovo profilo agente immettere i valori nelle caselle di testo Nome e Descrizione .

  5. Modificare i parametri per personalizzare il profilo. Per visualizzare tutti i parametri per un agente, deselezionare la casella di controllo Mostra solo i parametri utilizzati in questo profilo . Per informazioni sui parametri degli agenti, vedere i collegamenti alla fine di questo argomento.

  6. Selezionare OK.

Per eliminare un profilo definito dall'utente

  1. Se nella finestra di dialogo Profili agenti vengono visualizzati i profili di più agenti, selezionare un agente.

  2. Se un profilo è associato a uno o più agenti, modificare il profilo per tali agenti:

    1. Selezionare un altro profilo nella griglia Profili agenti .

    2. Fare clic su Modifica agenti esistenti.

      Nota

      Verrà modificato il profilo di tutti gli agenti del tipo selezionato per le pubblicazioni o le sottoscrizioni esistenti e non solo di quelli che utilizzano il profilo che si desidera eliminare.

  3. Selezionare il profilo che si desidera eliminare, quindi fare clic su Elimina.

  4. Selezionare OK.

Utilizzo di Transact-SQL

Per creare un nuovo profilo agente

  1. Nel database di distribuzione eseguire sp_add_agent_profile (Transact-SQL). Specificare @name, il valore 1 per @profile_typee uno dei seguenti valori per @agent_type:

    Se si desidera impostare il profilo come nuovo profilo predefinito per il tipo di agente di replica, specificare il valore 1 per @default. L'identificatore per il nuovo profilo viene restituito mediante il parametro di output @profile_id . Viene creato un nuovo profilo con un set di parametri del profilo basato sul profilo predefinito per il tipo di agente specificato.

  2. Una volta creato il nuovo profilo, è possibile personalizzarlo aggiungendo, rimuovendo o modificando i parametri predefiniti.

Per modificare un profilo agente esistente

  1. Nel database di distribuzione eseguire sp_help_agent_profile (Transact-SQL). Specificare uno dei seguenti valori per @agent_type:

    Vengono restituiti tutti i profili per il tipo di agente specificato. Tenere presente il valore di profile_id nel set di risultati del profilo da modificare.

  2. Nel database di distribuzione eseguire sp_help_agent_parameter (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id. Vengono restituiti tutti i parametri per il profilo. Tenere presente il nome dei parametri del profilo da modificare o rimuovere.

  3. Per modificare il valore di un parametro in un profilo, eseguire sp_change_agent_parameter (Transact-SQL). Specificare l'identificatore del profilo ottenuto nel passaggio 1 per @profile_id, il nome del parametro da modificare per @parameter_name e un nuovo valore del parametro per @parameter_value.

    Nota

    Non è possibile modificare un profilo agente esistente in modo da impostarlo come profilo predefinito di un agente. A tale scopo, è necessario creare un nuovo profilo come profilo predefinito, come indicato nella procedura indicata in precedenza.

  4. Per rimuovere un parametro da un profilo, eseguire sp_drop_agent_parameter (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id e il nome del parametro da rimuovere per @parameter_name.

  5. Per aggiungere un nuovo parametro a un profilo è necessario effettuare le seguenti operazioni:

    • Eseguire una query sulla tabella MSagentparameterlist (Transact-SQL) nel database di distribuzione per determinare i parametri del profilo che è possibile impostare per ogni tipo di agente.

    • Nel database di distribuzione eseguire sp_add_agent_parameter (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id, il nome di un parametro valido da aggiungere per @parameter_namee il valore del parametro per @parameter_value.

Per eliminare un profilo agente

  1. Nel database di distribuzione eseguire sp_help_agent_profile (Transact-SQL). Specificare uno dei seguenti valori per @agent_type:

    Vengono restituiti tutti i profili per il tipo di agente specificato. Tenere presente il valore di profile_id nel set di risultati del profilo da rimuovere.

  2. Nel database di distribuzione eseguire sp_drop_agent_profile (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id.

Per utilizzare i profili agenti durante la sincronizzazione

  1. Nel database di distribuzione eseguire sp_help_agent_profile (Transact-SQL). Specificare uno dei seguenti valori per @agent_type:

    Vengono restituiti tutti i profili per il tipo di agente specificato. Tenere presente il valore di profile_name nel set di risultati del profilo da utilizzare.

  2. Se l'agente è avviato da un processo dell'agente, modificare il passaggio del processo che avvia l'agente per specificare il valore di profile_name ottenuto nel passaggio 1 dopo il parametro della riga di comando -ProfileName . Per altre informazioni, vedere Visualizzare e modificare i parametri del prompt dei comandi dell'agente di replica (SQL Server Management Studio).

  3. Quando si avvia l'agente dal prompt dei comandi, specificare il valore di profile_name ottenuto nel passaggio 1 dopo il parametro della riga di comando -ProfileName.

Esempio (Transact-SQL)

In questo esempio viene creato un profilo personalizzato per l'agente di merge denominato custom_merge, viene modificato il valore del parametro -UploadReadChangesPerBatch , viene aggiunto un nuovo parametro -ExchangeType e vengono restituite informazioni sul profilo creato.

DECLARE @profilename AS sysname;
DECLARE @profileid AS int;
SET @profilename = N'custom_merge';

-- Create a temporary table to hold the returned 
-- Merge Agent profiles.
CREATE TABLE #profiles (
    profile_id int, 
    profile_name sysname,
    agent_type int,
    [type] int,
    description varchar(3000),
    def_profile bit)

INSERT INTO #profiles (profile_id, profile_name, 
    agent_type, [type],description, def_profile)
    EXEC sp_help_agent_profile @agent_type = 4;

SET @profileid = (SELECT profile_id FROM #profiles 
    WHERE profile_name = @profilename);

IF (@profileid IS NOT NULL)
BEGIN
    EXEC sp_drop_agent_profile @profileid;
END
DROP TABLE #profiles

-- Add a new merge agent profile. 
EXEC sp_add_agent_profile @profile_id = @profileid OUTPUT, 
@profile_name = @profilename, @agent_type = 4, 
@description = N'custom merge profile';

-- Change the value of uploadreadchangesperbatch in the profile.
EXEC sp_change_agent_parameter @profile_id = @profileid, 
    @parameter_name = N'-UploadReadChangesPerBatch', @parameter_value = 50;

-- Add a new parameter ExchangeType the profile. 
EXEC sp_add_agent_parameter @profile_id = @profileid, 
    @parameter_name = N'-ExchangeType', @parameter_value = 1;

-- Verify the new profile. 
EXEC sp_help_agent_parameter @profileid;
GO

Utilizzo di RMO

Per creare un nuovo profilo agente

  1. Creare una connessione al database di distribuzione tramite un'istanza della classe ServerConnection .

  2. Creare un'istanza della classe AgentProfile.

  3. Impostare le proprietà indicate di seguito nell'oggetto.

    • Name : nome del profilo.

    • AgentType : valore di AgentType che specifica il tipo di agente di replica per il quale viene creato il profilo.

    • ConnectionContext : oggetto ServerConnection creato nel passaggio 1.

    • (Facoltativo) Description : descrizione del profilo.

    • (Facoltativo) Default : impostare questa proprietà su true se tutti i processi del nuovo agente per AgentType utilizzeranno questo profilo per impostazione predefinita.

  4. Chiamare il metodo Create per creare il profilo nel server.

  5. Una volta reso disponibile il profilo nel server, è possibile personalizzarlo aggiungendo, rimuovendo o modificando i valori dei parametri dell'agente di replica.

  6. Per assegnare il profilo a un processo dell'agente di replica esistente, chiamare il metodo AssignToAgent . Passare il nome del database di distribuzione per distributionDBName e l'ID del processo per agentID.

Per modificare un profilo agente esistente

  1. Creare una connessione al database di distribuzione tramite un'istanza della classe ServerConnection .

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

  3. Chiamare il metodo LoadProperties . Se il metodo restituisce false, verificare che il server di distribuzione esista.

  4. Chiamare il metodo EnumAgentProfiles . Passare un valore di AgentType per limitare i profili restituiti a un tipo specifico di agente di replica.

  5. Ottenere l'oggetto AgentProfile desiderato dall'oggetto ArrayListrestituito, dove la proprietà Name dell'oggetto corrisponde al nome del profilo.

  6. Chiamare uno dei metodi di AgentProfile indicati di seguito per modificare il profilo.

    • AddParameter : aggiunge un parametro supportato al profilo, dove name è il nome del parametro dell'agente di replica e value è il valore specificato. Per enumerare tutti i parametri dell'agente supportati per un tipo di agente specificato, chiamare il metodo EnumParameterInfo . Questo metodo restituisce una classe ArrayList di oggetti AgentProfileParameterInfo che rappresentano tutti i parametri supportati.

    • RemoveParameter : rimuove un parametro esistente dal profilo, dove name è il nome del parametro dell'agente di replica. Per enumerare tutti i parametri dell'agente corrente definiti per il profilo, chiamare il metodo EnumParameters . Questo metodo restituisce una classe ArrayList di oggetti AgentProfileParameter che rappresentano il parametro esistente per il profilo.

    • ChangeParameter : modifica l'impostazione di un parametro esistente nel profilo, dove name è il nome del parametro dell'agente e newValue è il valore nel quale viene modificato il parametro. Per enumerare tutti i parametri dell'agente corrente definiti per il profilo, chiamare il metodo EnumParameters . Questo metodo restituisce una classe ArrayList di oggetti AgentProfileParameter che rappresentano il parametro esistente per il profilo. Per enumerare tutte le impostazioni del parametro dell'agente supportate, chiamare il metodo EnumParameterInfo . Questo metodo restituisce una classe ArrayList di oggetti AgentProfileParameterInfo che rappresentano i valori supportati per tutti i parametri.

Per eliminare un profilo agente

  1. Creare una connessione al database di distribuzione tramite un'istanza della classe ServerConnection .

  2. Creare un'istanza della classe AgentProfile. Impostare il nome del profilo per la proprietà Name e l'oggetto ServerConnection creato nel passaggio 1 per la proprietà ConnectionContext.

  3. Chiamare il metodo LoadProperties . Se il metodo restituisce false, il nome specificato non è corretto o il profilo non esiste nel server.

  4. Verificare che la proprietà Type sia impostata su User, in modo da indicare un profilo del cliente. Non è necessario rimuovere un profilo con valore System per Type.

  5. Chiamare il metodo Remove per rimuovere dal server il profilo definito dall'utente rappresentato da questo oggetto.

Completamento: dopo avere modificato i parametri degli agenti

Le modifiche apportate al parametro dell'agente verranno applicate al successivo avvio dell'agente. Se l'agente viene eseguito in modo continuo, è necessario arrestarlo e riavviarlo. A partire da SQL Server 2017 CU3, alcune modifiche dei parametri degli agenti hanno effetto senza che sia necessario riavviare gli agenti.

Vedi anche

Profili degli agenti di replica
Replication Snapshot Agent
Replication Log Reader Agent
Replication Distribution Agent
Replication Merge Agent
Agente di lettura coda repliche