Konfigurieren von Distributed Replay

Gilt für: SQL Server 2016 (13.x), SQL Server 2017 (14.x) und SQL Server 2019 (15.x)

Wichtig

SQL Server Distributed Replay ist nicht mit SQL Server 2022 (16.x) verfügbar.

Die Konfigurationsdetails für Microsoft SQL Server Distributed Replay befinden sich in XML-Dateien im Distributed Replay-Controller, in den Distributed Replay-Clients und am Installationsort des Verwaltungstools. Hierzu gehören die folgenden Dateien:

Controllerkonfigurationsdatei: DReplayController.config

Beim Starten des SQL Server Distributed Replay Controller-Diensts wird der Protokolliergrad aus der Controllerkonfigurationsdatei DReplayController.configgeladen. Diese Datei befindet sich in dem Ordner, in dem Sie den Distributed Replay Controller-Dienst installiert haben:

<Controllerinstallationspfad>\DReplayController.config

Der in der Controllerkonfigurationsdatei angegebene Protokolliergrad enthält die folgenden Informationen:

Einstellung XML-Element BESCHREIBUNG Zulässige Werte Erforderlich
Protokolliergrad <LoggingLevel> Gibt den Protokolliergrad für den Controllerdienst an. INFORMATION | WARNING | CRITICAL Nein. Standardmäßig lautet der Wert CRITICAL.

Beispiel

In diesem Beispiel wird eine Controllerkonfigurationsdatei gezeigt, die geändert wurde, um INFORMATION - und WARNING -Protokolleinträge zu unterdrücken.

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

Clientkonfigurationsdatei: DReplayClient.config

Beim Starten des SQL Server Distributed Replay-Clientdiensts werden Konfigurationseinstellungen aus der Clientkonfigurationsdatei DReplayClient.configgeladen. Diese Datei befindet sich auf jedem Client in dem Ordner, in dem Sie den Distributed Replay-Clientdienst installiert haben:

<Clientinstallationspfad>\DReplayClient.config

In der Clientkonfigurationsdatei werden die folgenden Einstellungen angegeben:

Einstellung XML-Element BESCHREIBUNG Zulässige Werte Erforderlich
Controller <Controller> Gibt den Computernamen des Controllers an. Der Client versucht, sich durch Herstellen einer Verbindung mit dem Controller bei der Distributed Replay Utility-Umgebung zu registrieren. Sie können mit "localhost" oder "." auf den lokalen Computer verweisen. Nein. Standardmäßig versucht der Client, sich bei der Controllerinstanz zu registrieren, die lokal (".") ausgeführt wird, sofern sie vorhanden ist.
Clientarbeitsverzeichnis <WorkingDirectory> Der lokale Pfad auf dem Client, unter dem die Dispatchdateien gespeichert werden.

Die Dateien in diesem Verzeichnis werden bei der nächsten Wiedergabe überschrieben.
Ein vollständiger Verzeichnisname, der mit dem Laufwerkbuchstaben beginnt. Nein. Wenn kein Wert angegeben ist, werden die Dispatchdateien am selben Speicherort wie die Standardclientkonfigurationsdatei gespeichert. Wenn ein Wert angegeben wird und dieser Ordner nicht auf dem Client vorhanden ist, wird der Clientdienst nicht gestartet.
Clientergebnisverzeichnis <ResultDirectory> Der lokale Pfad auf dem Client, unter dem die Ergebnisdatei der Ablaufverfolgung aus der Wiedergabeaktivität (für den Client) gespeichert wird.

Die Dateien in diesem Verzeichnis werden bei der nächsten Wiedergabe überschrieben.
Ein vollständiger Verzeichnisname, der mit dem Laufwerkbuchstaben beginnt. Nein. Wenn kein Wert angegeben ist, wird die Ergebnisdatei der Ablaufverfolgung am selben Speicherort wie die Standardclientkonfigurationsdatei gespeichert. Wenn ein Wert angegeben wird und dieser Ordner nicht auf dem Client vorhanden ist, wird der Clientdienst nicht gestartet.
Protokolliergrad <LoggingLevel> Der Protokolliergrad für den Clientdienst. INFORMATION | WARNING | CRITICAL Nein. Standardmäßig lautet der Wert CRITICAL.

Beispiel

In diesem Beispiel wird eine Clientkonfigurationsdatei gezeigt, die geändert wurde, um anzugeben, dass der Controllerdienst auf einem anderen Computer (mit dem Namen Controller1) ausgeführt wird. Das WorkingDirectory -Element und das ResultDirectory -Element wurden für die Verwendung des Ordners c:\ClientWorkingDir bzw. c:\ResultTraceDirkonfiguriert. Der Standardwert des Protokolliergrads wurde geändert, um INFORMATION - und WARNING -Protokolleinträge zu unterdrücken.

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

Vorverarbeitungskonfigurationsdatei: DReplay.exe.preprocess.config

Wenn Sie das Verwaltungstool verwenden, um die Vorverarbeitungsphase zu initiieren, lädt das Verwaltungstool die Vorverarbeitungseinstellungen aus der Vorverarbeitungskonfigurationsdatei DReplay.exe.preprocess.config.

Verwenden Sie die Standardkonfigurationsdatei oder den Parameter -c des Verwaltungstools, um den Speicherort einer geänderten Vorverarbeitungskonfigurationsdatei anzugeben. Weitere Informationen zur Verwendung der Vorverarbeitungsoption des Verwaltungstools finden Sie unter Vorverarbeitungsoption (Verwaltungstool „Distributed Replay“).

Die Standardkonfigurationsdatei für die Vorverarbeitung befindet sich in dem Ordner, in dem Sie das Verwaltungstool installiert haben:

<Installationspfad des Verwaltungstools>\DReplayAdmin\DReplay.exe.preprocess.config

Die Vorverarbeitungskonfigurationseinstellungen werden in XML-Elementen angegeben, die untergeordnete Elemente des <PreprocessModifiers> -Elements in der Vorverarbeitungskonfigurationsdatei sind. Dazu gehören folgende Einstellungen:

Einstellung XML-Element BESCHREIBUNG Zulässige Werte Erforderlich
Systemsitzungsaktivitäten einschließen <IncSystemSession> Gibt an, ob Systemsitzungsaktivitäten während der Aufzeichnung in die Wiedergabe eingeschlossen werden. Yes | No Nein. Standardmäßig lautet der Wert No.
Maximale Leerlaufzeit <MaxIdleTime> Legt die maximale Leerlaufzeit auf eine absolute Zahl (in Sekunden) fest. Eine ganze Zahl > = -1.

-1 gibt an, dass der ursprüngliche Wert in der ursprünglichen Ablaufverfolgungsdatei unverändert bleibt.

0 gibt an, dass zu einem beliebigen Zeitpunkt Aktivitäten erfolgen.
Nein. Standardmäßig lautet der Wert -1.

Beispiel

Die Standardkonfigurationsdatei für die Vorverarbeitung:

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

Wiedergabekonfigurationsdatei: DReplay.exe.replay.config

Wenn Sie das Verwaltungstool verwenden, um die Ereigniswiedergabephase zu initiieren, lädt das Verwaltungstool die Wiedergabeeinstellungen aus der Wiedergabekonfigurationsdatei DReplay.exe.replay.config.

Verwenden Sie die Standardkonfigurationsdatei oder den Parameter -c des Verwaltungstools, um den Speicherort einer geänderten Wiedergabekonfigurationsdatei anzugeben. Weitere Informationen zur Verwendung der Wiedergabeoption des Verwaltungstools finden Sie unter Wiedergabeoption (Verwaltungstool „Distributed Replay“).

Die Standardkonfigurationsdatei für die Wiedergabe befindet sich in dem Ordner, in dem Sie das Verwaltungstool installiert haben:

<Installationspfad des Verwaltungstools>\DReplayAdmin\DReplay.exe.replay.config

Die Wiedergabekonfigurationseinstellungen werden in XML-Elementen angegeben, die untergeordnete Elemente des <ReplayOptions> -Elements und des <OutputOptions> -Elements der Wiedergabekonfigurationsdatei sind.

<ReplayOptions> Element

Im <ReplayOptions> -Element der Wiedergabekonfigurationsdatei werden die folgenden Einstellungen angegeben:

Einstellung XML-Element BESCHREIBUNG Zulässige Werte Erforderlich
Zielinstanz von SQL Server (der Testserver) <Server> Gibt den Namen des Servers und der SQL Server -Instanz an, mit der eine Verbindung hergestellt werden soll. server_name[\instance_name]

Sie können zum Darstellen des lokalen Hosts nicht "localhost" oder "." verwenden.
Nein, wenn der Servername bereits mit dem target server-Parameter -s für die replay-Option des Verwaltungstools angegeben wurde.
Sequenzierungsmodus <SequencingMode> Gibt den für die Ereignisplanung verwendeten Modus an. synchronization | stress Nein. Standardmäßig lautet der Wert stress.
Belastungsskalagranularität <StressScaleGranularity> Gibt an, ob im Belastungsmodus alle Verbindungen auf dem Dienstprofilbezeichner (Service Profile Identifier, SPID) zusammen (SPID) oder unabhängig voneinander (Verbindung) skaliert werden sollen. SPID | Verbindung Ja. Standardmäßig lautet der Wert SPID.
Verbindungszeitskala <ConnectTimeScale> Wird verwendet, um die Verbindungszeit im Belastungsmodus zu skalieren. Eine ganze Zahl zwischen 1 und 100. Nein. Standardmäßig lautet der Wert 100.
Reaktionszeitskala <ThinkTimeScale> Dient zum Skalieren der Reaktionszeit im Belastungsmodus. Eine ganze Zahl zwischen 0 und 100. Nein. Standardmäßig lautet der Wert 100.
Verbindungspooling verwenden <UseConnectionPooling> Gibt an, ob Verbindungspooling auf jedem Distributed Replay-Client aktiviert wird. Yes | No Ja. Standardmäßig lautet der Wert Yes.
Systemüberwachungsintervall <HealthmonInterval> Gibt an (in Sekunden), wie oft die Systemüberwachung ausgeführt werden soll.

Dieser Wert wird nur im Synchronisierungsmodus verwendet.
Integer >= 1

(zum Deaktivieren-1 )
Nein. Standardmäßig lautet der Wert 60.
Timeout der Abfrage <QueryTimeout> Gibt den Wert für das Timeout der Abfrage in Sekunden an. Dieser Wert ist nur wirksam, bis die erste Zeile zurückgegeben wurde. Integer >= 1

(zum Deaktivieren-1 )
Nein. Standardmäßig lautet der Wert 3600.
Threads pro Client <ThreadsPerClient> Gibt die Anzahl der Wiedergabethreads an, die für jeden Wiedergabeclient verwendet werden sollen. Eine ganze Zahl zwischen 1 und 512. Nein. Wenn kein Wert angegeben ist, wird von Distributed Replay der Wert 255verwendet.

<OutputOptions> Element

Im <OutputOptions> -Element der Wiedergabekonfigurationsdatei werden die folgenden Einstellungen angegeben:

Einstellung XML-Element BESCHREIBUNG Zulässige Werte Erforderlich
Zeilenanzahl aufzeichnen <RecordRowCount> Gibt an, ob die Zeilenanzahl für jedes Resultset aufgezeichnet werden soll. Yes | No Nein. Standardmäßig lautet der Wert Yes.
Resultset aufzeichnen <RecordResultSet> Gibt an, ob der Inhalt aller Resultsets aufgezeichnet werden soll. Yes | No Nein. Standardmäßig lautet der Wert No.

Beispiel

Die Standardkonfigurationsdatei für die Wiedergabe:

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

Mögliches Problem beim Ausführen im Sequenzierungsmodus der Synchronisierung

Möglicherweise stellen Sie fest, dass die Wiedergabefunktion anscheinend nicht mehr reagiert oder Ereignisse nur langsam wiedergibt. Dieses Phänomen kann auftreten, wenn die wiedergegebene Ablaufverfolgung Daten und/oder Ereignisse verwendet, die in der wiederhergestellten Zieldatenbank nicht vorhanden sind.

Ein Beispiel hierfür ist eine erfasste Arbeitsauslastung, die WAITFOR verwendet, wie etwa in einer WAITFOR RECEIVE-Anweisung von Service Broker. Bei Verwendung des Sequenzierungsmodus der Synchronisierung werden Batches nacheinander wiedergegeben. Wenn in der Quelldatenbank eine INSERT-Anweisung ausgeführt wird, nachdem die Datenbanksicherung ausgeführt, aber bevor die Erfassungsablaufverfolgung für die Wiedergabe gestartet wurde, muss die während der Wiedergabe ausgegebene WAITFOR RECEIVE-Anweisung möglicherweise die gesamte Dauer von WAITFOR abwarten. Ereignisse, die für eine Wiedergabe nach der WAITFOR RECEIVE-Anweisung festgelegt wurden, werden blockiert. Dies kann dazu führen, dass der Zähler des Leistungsmonitors für die Anzahl von Batchanforderungen pro Sekunde für die Wiedergabe-Zieldatenbank auf 0 fällt, bis die WAITFOR-Anweisung abgeschlossen ist.

Wenn Sie den Synchronisierungsmodus verwenden müssen und dieses Verhalten vermeiden möchten, gehen Sie folgendermaßen vor:

  1. Legen Sie die Datenbanken still, die Sie als Wiedergabeziele verwenden werden.

  2. Warten Sie den Abschluss aller ausstehenden Aktivitäten ab.

  3. Sichern Sie die Datenbanken, und warten Sie, bis alle Sicherungen abgeschlossen sind.

  4. Starten Sie die Erfassung der Ablaufverfolgung für die Wiedergabe, und nehmen Sie die normale Arbeitsauslastung wieder auf.

Weitere Informationen