Configurare Riesecuzione distribuita

Si applica a: SQL Server 2016 (13.x), SQL Server 2017 (14.x) e SQL Server 2019 (15.x)

Importante

Riesecuzione distribuita di SQL Server non è disponibile con SQL Server 2022 (16.x).

I dettagli relativi alla configurazione della Riesecuzione distribuita di Microsoft SQL Server sono specificati in file XML nel controller della Riesecuzione distribuita, nei client e nella posizione in cui è installato lo strumento di amministrazione, ovvero i file seguenti:

File di configurazione del controller: DReplayController.config

All'avvio del servizio Distributed Replay Controller di SQL Server, viene caricato il livello di registrazione dal file di configurazione del controller, ovvero DReplayController.config. Questo file si trova nella cartella in cui è stato installato il servizio Distributed Replay Controller:

<percorso installazione controller>\DReplayController.config

Nel livello di registrazione specificato nel file di configurazione del controller è inclusa la seguente impostazione:

Impostazione Elemento XML Descrizione Valori consentiti Richiesto
Livello di registrazione <LoggingLevel> Specifica il livello di registrazione per il servizio controller. INFORMATION | WARNING | CRITICAL No. Per impostazione predefinita, il valore è CRITICAL.

Esempio

In questo esempio viene illustrato un file di configurazione del controller che è stato modificato per eliminare le voci di log INFORMATION e WARNING .

<?xml version='1.0'?> 
<Options> 
<LoggingLevel>CRITICAL</LoggingLevel> 
</Options> 

File di configurazione del client: DReplayClient.config

All'avvio del servizio client Distributed Replay di SQL Server, vengono caricate le impostazioni di configurazione dal file di configurazione del client, ovvero DReplayClient.config. Questo file si trova in ogni client, nella cartella in cui è stato installato il servizio client Distributed Replay:

<percorso installazione client>\DReplayClient.config

Di seguito vengono indicate le impostazioni specificate nel file di configurazione del client:

Impostazione Elemento XML Descrizione Valori consentiti Richiesto
Controller <Controller> Specifica il nome computer del controller. Il client tenterà di registrarsi nell'ambiente Distributed Replay contattando il controller. È possibile utilizzare "localhost" o "." per fare riferimento al computer locale. No. Per impostazione predefinita, viene effettuato un tentativo di registrazione del client nell'istanza del controller eseguita in locale ("."), se presente.
Directory di lavoro client <WorkingDirectory> Percorso locale nel client in cui vengono salvati i file di recapito.

I file inclusi in questa directory vengono sovrascritti alla riproduzione successiva.
Nome di directory completo, che inizia con la lettera di unità. No. Se non è specificato alcun valore, i file di recapito verranno salvati nello stesso percorso del file di configurazione del client predefinito. Se viene specificato un valore e la cartella non esiste nel client, il servizio client non verrà avviato.
Directory dei risultati del client <ResultDirectory> Percorso locale nel client in cui viene salvato il file di traccia dei risultati dall'attività di riproduzione (per il client).

I file inclusi in questa directory vengono sovrascritti alla riproduzione successiva.
Nome di directory completo, che inizia con la lettera di unità. No. Se non è specificato alcun valore, il file di traccia dei risultati verrà salvato nello stesso percorso del file di configurazione del client predefinito. Se viene specificato un valore e la cartella non esiste nel client, il servizio client non verrà avviato.
Livello di registrazione <LoggingLevel> Livello di registrazione per il servizio client. INFORMATION | WARNING | CRITICAL No. Per impostazione predefinita, il valore è CRITICAL.

Esempio

In questo esempio viene illustrato un file di configurazione del client che è stato modificato per specificare che il servizio controller viene eseguito in un computer diverso, denominato Controller1. Gli elementi WorkingDirectory e ResultDirectory sono stati configurati per utilizzare rispettivamente le cartelle c:\ClientWorkingDir e c:\ResultTraceDir. Il livello di registrazione è stato modificato rispetto al valore predefinito per eliminare le voci di log INFORMATION e WARNING .

<?xml version='1.0'?> 
<Options> 
    <Controller>Controller1</Controller> 
    <WorkingDirectory>c:\ClientWorkingDir</WorkingDirectory> 
    <ResultDirectory>c:\ResultTraceDir</ResultDirectory> 
    <LoggingLevel>CRITICAL</LoggingLevel> 
</Options> 

File di configurazione della pre-elaborazione: DReplay.exe.preprocess.config

Quando si utilizza lo strumento di amministrazione per avviare la fase di pre-elaborazione, lo strumento di amministrazione carica le impostazioni di pre-elaborazione dal file di configurazione della pre-elaborazione, ovvero DReplay.exe.preprocess.config.

Usare il file di configurazione predefinito o il parametro -c dello strumento di amministrazione per specificare il percorso di un file di configurazione di pre-elaborazione modificato. Per altre informazioni sull'uso dell'opzione preprocess dello strumento di amministrazione, vedere Opzione preprocess (strumento di amministrazione Riesecuzione distribuita).

Il file di configurazione della pre-elaborazione predefinito si trova nella cartella in cui è stato installato lo strumento di amministrazione:

<percorso installazione strumento di amministrazione>\DReplayAdmin\DReplay.exe.preprocess.config

Le impostazioni di configurazione della pre-elaborazione vengono specificate in elementi XML figli dell'elemento <PreprocessModifiers> nel file di configurazione della pre-elaborazione. Tali impostazioni includono quanto segue:

Impostazione Elemento XML Descrizione Valori consentiti Richiesto
Inclusione delle attività della sessione di sistema <IncSystemSession> Indica se le attività della sessione di sistema eseguite durante l'acquisizione verranno incluse durante la riproduzione. Yes | No No. Per impostazione predefinita, il valore è No.
Tempo massimo di inattività <MaxIdleTime> Fissa il tempo di inattività su un numero assoluto (in secondi). Un numero intero >= -1.

-1 indica nessuna modifica rispetto al valore originale nel file di traccia originale.

0 indica che sono in corso una o più attività in un momento specificato.
No. Per impostazione predefinita, il valore è -1.

Esempio

File di configurazione della pre-elaborazione predefinito:

<?xml version='1.0'?> 
<Options> 
    <PreprocessModifiers> 
        <IncSystemSession>No</IncSystemSession> 
        <MaxIdleTime>-1</MaxIdleTime> 
    </PreprocessModifiers> 
</Options> 

File di configurazione della riproduzione: DReplay.exe.replay.config

Quando si utilizza lo strumento di amministrazione per avviare la fase di riproduzione dell'evento, lo strumento di amministrazione carica le impostazioni di riproduzione dal file di configurazione della riproduzione, ovvero DReplay.exe.replay.config.

Usare il file di configurazione predefinito o il parametro -c dello strumento di amministrazione per specificare il percorso di un file di configurazione della riproduzione modificato. Per altre informazioni sull'uso dell'opzione replay dello strumento di amministrazione, vedere Opzione replay (strumento di amministrazione Riesecuzione distribuita).

Il file di configurazione della riproduzione predefinito si trova nella cartella in cui è stato installato lo strumento di amministrazione:

<percorso installazione strumento di amministrazione>\DReplayAdmin\DReplay.exe.replay.config

Le impostazioni di configurazione della riproduzione vengono specificate in elementi XML figli degli elementi <ReplayOptions> e <OutputOptions> del file di configurazione della riproduzione.

Elemento <ReplayOptions>

Di seguito vengono indicate le impostazioni specificate dal file di configurazione della riproduzione nell'elemento <ReplayOptions> :

Impostazione Elemento XML Descrizione Valori consentiti Richiesto
Istanza di destinazione di SQL Server (server di prova) <Server> Specifica il nome del server e dell'istanza di SQL Server a cui connettersi. nome_server[\nome_istanza]

Non è possibile utilizzare "localhost" o "." per rappresentare l'host locale.
No, se il nome del server è già specificato con il parametro -starget server con l'opzione replay dello strumento di amministrazione.
Modalità di sequenza <SequencingMode> Specifica la modalità utilizzata per la pianificazione degli eventi. synchronization | stress No. Per impostazione predefinita, il valore è stress.
Granularità di scala di stress <StressScaleGranularity> Specifica se tutte le connessioni nel Servizio Profilo l'Identificatore (SPID) devono essere ridimensionate, insieme (SPID) o indipendentemente (Connessione), in modalità di stress. SPID | Connessione Sì. Per impostazione predefinita, il valore è SPID.
Scala del tempo di connessione <ConnectTimeScale> Viene utilizzata per ridimensionare il tempo di connessione in modalità di stress. Numero intero compreso tra 1 e 100. No. Per impostazione predefinita, il valore è 100.
Scala del tempo interazione utente <ThinkTimeScale> Viene utilizzata per ridimensionare il tempo interazione utente in modalità di stress. Numero intero compreso tra 0 e 100. No. Per impostazione predefinita, il valore è 100.
Utilizzare un pool di connessioni <UseConnectionPooling> Specifica se il pool di connessioni sarà abilitato su ogni client di riproduzione distribuita. Sì | No Sì. Per impostazione predefinita, il valore è Yes.
Intervallo di Health Monitor <HealthmonInterval> Indica la frequenza, in secondi, con cui eseguire Health Monitor.

Questo valore viene utilizzato solo in modalità di sincronizzazione.
Numero intero >= 1

(-1 per disabilitare l'impostazione)
No. Per impostazione predefinita, il valore è 60.
Timeout query <QueryTimeout> Specifica il valore di timeout query in secondi. Questo valore è valido solo fino a quando non viene restituita la prima riga. Numero intero >= 1

(-1 per disabilitare l'impostazione)
No. Per impostazione predefinita, il valore è 3600.
Thread per client <ThreadsPerClient> Specifica il numero di thread di riproduzione da utilizzare per ogni client di riproduzione. Numero intero compreso tra 1 e 512. No. Se non è specificata, in Distributed Replay verrà utilizzato il valore 255.

Elemento <OutputOptions>

Di seguito vengono indicate le impostazioni specificate dal file di configurazione della riproduzione nell'elemento <OutputOptions> :

Impostazione Elemento XML Descrizione Valori consentiti Richiesto
Registrazione del conteggio delle righe <RecordRowCount> Indica se deve essere registrato il conteggio delle righe per ogni set di risultati. Yes | No No. Per impostazione predefinita, il valore è Yes.
Registrazione del set di risultati <RecordResultSet> Indica se deve essere registrato il contenuto di tutti i set di risultati. Yes | No No. Per impostazione predefinita, il valore è No.

Esempio

File di configurazione della riproduzione predefinito:

<?xml version='1.0'?> 
<Options> 
    <ReplayOptions> 
        <Server></Server> 
        <SequencingMode>stress</SequencingMode> 
        <ConnectTimeScale></ConnectTimeScale> 
        <ThinkTimeScale></ThinkTimeScale> 
        <HealthmonInterval>60</HealthmonInterval> 
        <QueryTimeout>3600</QueryTimeout> 
        <ThreadsPerClient></ThreadsPerClient> 
    </ReplayOptions> 
    <OutputOptions> 
        <ResultTrace> 
            <RecordRowCount>Yes</RecordRowCount> 
            <RecordResultSet>No</RecordResultSet> 
        </ResultTrace> 
    </OutputOptions> 
</Options> 

Possibile problema durante l'esecuzione con la modalità di sequenza della sincronizzazione

È possibile che si verifichi un problema per cui la funzionalità di riesecuzione appare bloccata o riesegue gli eventi lentamente. Questo problema può verificarsi se la traccia da rieseguire è basata su dati e/o eventi che non esistono nel database di destinazione ripristinato.

Un esempio è rappresentato da un carico di lavoro che usa WAITFOR, come nell'istruzione WAITFOR RECEIVE di Service Broker. Quando viene usata la modalità di sequenza della sincronizzazione, i batch vengono rieseguiti in serie. Se viene eseguito INSERT nel database di origine dopo il backup del database ma prima dell'avvio della traccia di acquisizione della riesecuzione, è possibile che WAITFOR RECEIVE inviato durante la riesecuzione debba attendere per l'intera durata di WAITFOR. Gli eventi impostati per essere rieseguiti dopo WAITFOR RECEIVE verranno bloccati. Ciò può comportare l'azzeramento del contatore Richieste batch/sec di Performance Monitor per la destinazione del database di riesecuzione fino al completamento di WAITFOR.

Se è necessario usare la modalità di sincronizzazione e si vuole evitare questo comportamento, è necessario eseguire le operazioni seguenti:

  1. Disattivare i database che verranno usati come destinazioni di riesecuzione.

  2. Consentire il completamento di tutte le richieste in sospeso.

  3. Eseguire il backup dei database e consentire il completamento dei backup.

  4. Avviare l'acquisizione della traccia di riesecuzione distribuita e riprendere il normale carico di lavoro.

Vedi anche