Ablaufverfolgung (Master Data Services)
Gilt für: SQL Server – nur Windows Azure SQL Managed Instance
Nachdem Sie Master Data Services (MDS) installiert haben, finden Sie möglicherweise das Feature zur Ablaufverfolgungsprotokollierung hilfreich für die Fehlerdiagnose, Supportanfragen und die Überwachung der Anwendungsnutzung und -leistung. In diesem Artikel werden die Schritte zum Aktivieren und Konfigurieren der Ablaufverfolgungsprotokollierung beschrieben. Insbesondere wird in diesem Artikel die Ablaufverfolgung einer Textprotokolldatei behandelt. In diesem Artikel wird auch das Verfahren zum Erstellen einer Protokolldatei beschrieben, die bei der Fehlerbehebung von Fehlern helfen kann, die beim Erstellen einer MDS-Datenbank auftreten können.
Hintergrund
Master Data Services besteht aus einer ASP.NET-Webanwendung (Master Data Manager) und einem WCF-Dienst; beide werden in IIS und einer SQL Server-Datenbank gehostet. Master Data Manager-Anforderungen und externe Aufrufe an den Webdienst-API-Endpunkt werden von einer allgemeinen Dienstebene behandelt. Die Dienstebene kann jede Vorgangsanforderung/-antwort, wichtige Ereignisse und Fehler protokollieren.
Als Administrator mit Zugriff auf Dateien auf dem IIS-Webserver können Sie die Protokollierung aktivieren, indem Sie die MDS-Datei Web.config ändern.
Standardmäßig befindet sich die Datei "Web.config" in einem der folgenden Webanwendungsordner:
SQL Server 2008 R2: program_files\Microsoft SQL Server\Master Data Services\WebApplication
SQL Server 2012 und spätere Versionen: program_files\Microsoft SQL Server\<nnn>\Master Data Services\WebApplication
Die Zahlen nnn im Pfad entsprechen der Version von SQL Server, die installiert wird. In der folgenden Tabelle werden die Versionen für die Pfade angezeigt:
Version | nnn |
---|---|
SQL Server 2019 | 150 |
SQL Server 2017 | 140 |
SQL Server 2016 | 130 |
SQL Server 2014 | 120 |
SQL Server 2012 | 110 |
Achtung
Durch das Aktualisieren von Web.config wird die MDS-Anwendungsdomäne in IIS wiederverwendet. Vorhandene Benutzersitzungen verlieren zwischengespeicherte Informationen, und Benutzer können Sitzungsfehler oder langsame Seitenladevorgänge feststellen. Führen Sie Änderungen nach Möglichkeit zu Schwachlastzeiten durch.
Ablaufprotokollierung für MDS-Webanwendung
SQL Server 2016 und höher
Die Datei "Web.config" enthält einen Ablaufverfolgungsabschnitt, wie unten dargestellt. Dieser Abschnitt wird in SQL Server 2016 (13.x) Master Data Services eingeführt.
<sources>
<!-- Adjust the switch value to control the types of messages that should be logged.
https://msdn.microsoft.com/library/system.diagnostics.sourcelevels
Use a switchValue of Verbose to generate a full log. Please be aware that
the trace file can get quite large very quickly. -->
<source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="Warning, ActivityTracing">
<listeners>
<!-- Set a directory path where the service account you chose while setting up Master Data Services has read and write privileges.
Default path is Logs in WebApplication folder, for example C:\Program Files\Microsoft SQL Server\130\Master Data Services\WebApplication
New log file will be created every day or every 10 mb.
When directory size hits the 200 mb limitation, the oldest file will be deleted. -->
<add name="FileTraceListener"
type="Microsoft.MasterDataServices.Core.Logging.FileTraceListener, Microsoft.MasterDataServices.Core"
initializeData="DirectoryPath = Logs; FileSizeInMb = 10; MaxDirectorySizeInMb = 200"/>
<remove name="Default"/>
</listeners>
</source>
</sources>
Folgendes Verhalten ist das Standardverhalten für die Ablaufverfolgung:
Die Ablaufverfolgung ist für
Warning
- undActivityTracing
-Nachrichten aktiviert.Weitere Informationen finden Sie unter SourceLevels-Enumeration.
Die Protokolle werden im Ordner Protokolle unter dem Ordner WebApplication gespeichert. Der Standardspeicherort ist C:\Program Files\Microsoft SQL Server\nnn\Master Data Services\WebApplication\Logs.
Die Datei wird für jeden Tag oder für jeweils 10 MB erstellt.
Wenn die Größe des Verzeichnisses 200 MB erreicht, wird das älteste Protokoll gelöscht.
Das Protokollformat ist CSV. In der folgenden Tabelle wird das Protokollformat beschrieben:
Element Beschreibung Time Zeitpunkt des Ablaufverfolgungseintrags CorrelationID Eine Korrelations-ID wird für jede Anforderung zugewiesen. Alle Ablaufverfolgungen, die durch diese Anforderung ausgelöst werden, haben die gleiche Korrelations-ID.
Tritt ein Fehler in der Benutzeroberfläche auf, wird die Korrelations-ID in der Fehlermeldung angezeigtVorgang Vorgangsname anfordern. Wenn die Anforderung eine Web-UI-Anforderung ist, ist der Vorgangsname die URL. Wenn die Anforderung eine API-Anforderung ist, ist der Vorgangsname der Dienstname Ebene Ebene dieses Ablaufverfolgungseintrags `Message` Nachrichtentext der Ablaufverfolgung
SQL Server 2014 und ältere Versionen
Diagnoseabschnitt aus der ursprünglich installierten Datei "Web.config"
Der folgende Dateiausschnitt zeigt den Diagnoseabschnitt aus der ursprünglich installierten Datei "Web.config".
Hinweis
switchValue
wird auf Off
festgelegt. Darüber hinaus werden die Beispielzeilen auskommentiert. Diese Zeilen sind Beispiele für das Hinzufügen von Ablaufverfolgungslistenern verschiedener Typen.
<system.diagnostics>
<sources>
<!-- Adjust the switch value to control the types of messages that should be logged. -->
<source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="Off">
<listeners>
<!-- Enable and configure listeners as desired to obtain trace messages. -->
<!-- <add name="LogFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="MdsTrace.log" traceOutputOptions="DateTime" /> -->
<!-- <add name="EtwListener" type="System.Diagnostics.Eventing.EventProviderTraceListener, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"
initializeData="{F2A341B8-CA5F-49ad-B00C-A82D3FCF948B}"/> -->
<!-- <remove name="Default"/> -->
</listeners>
</source>
</sources>
<trace autoflush="true"/>
</system.diagnostics>
Aktivieren der Protokolldateiablaufverfolgung
Um die Protokollierung zu aktivieren, ändern Sie switchValue
in All
oder einen anderen gültigen Wert, wie unten in Tabelle 1 beschrieben. Um die Ausgabe in eine Protokolldatei zu aktivieren, heben Sie die Auskommentierung in der Zeile LogFileListener
auf, wie im folgenden Dateifragment gezeigt:
<system.diagnostics>
<sources>
<!-- Adjust the switch value to control the types of messages that should be logged. -->
<source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="All">
<listeners>
<!-- Enable and configure listeners as desired to obtain trace messages. -->
<add name="LogFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="MdsTrace.log" traceOutputOptions="DateTime"/>
<!-- <add name="EtwListener" type="System.Diagnostics.Eventing.EventProviderTraceListener, System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" initializeData="{F2A341B8-CA5F-49ad-B00C-A82D3FCF948B}"/> -->
<!-- <remove name="Default"/> -->
</listeners>
</source>
</sources>
<trace autoflush="true"/>
</system.diagnostics>
Tabelle 1 – SwitchValue-Einstellungen für die Protokollierung
Einstellung | Protokollierte Inhalte |
---|---|
Aus | Nothing |
Fehler | nur Fehler |
Warnung | Fehler und Warnungen |
Informationen | Fehler, Warnungen und Informationsmeldungen |
Ausführlich | „Informationen“ und andere Debugablaufverfolgungsinformationen, einschließlich API-Anforderungen und -Antworten im XML-Format |
ActivityTracing | nur Start- und Stoppereignisse |
Alle | „Ausführlich“ und „ActivityTracing“ |
Dateiname und Pfad
Der initializeData
-wert entspricht dem Namen der Protokolldatei. Dies kann auf einen anderen Namen geändert werden oder um einen gewünschten Pfad einzuschließen. Wenn der Pfad nicht angegeben ist, wird die Datei standardmäßig im Web-Anwendungsverzeichnis verwendet (in dem sich Web.config befindet).
Wichtig
Das Dienstkonto für den MDS-Anwendungspool muss Schreibzugriff auf den Speicherort der Protokolldatei haben.
Protokollierungsstufe des Details
Tabelle 2 unten beschreibt die Kategorien von Ablaufverfolgungsereignissen, die mit den wichtigsten/kritischen Ereignissen oben protokolliert oder sortiert werden können. In Tabelle 1 oben sind die gültigen Einstellungen für die Protokollierung switchValue
aufgeführt. Diese Einstellung kann angepasst werden, um die richtige Menge an Protokollierungsdetails entsprechend der Situation zu erzeugen.
Tabelle 2 – MDS-Protokollierungsereignistypen
Ereignistyp | Beschreibung |
---|---|
Kritisch | ein schwer wiegender Fehler oder Anwendungsabsturz |
Fehler | ein behebbarer Fehler |
Warnung | ein nicht kritisches Problem |
Informationen | eine Informationsnachricht |
Ausführlich | eine Debugablaufverfolgungsnachricht |
Start | Starten eines logischen Vorgangs |
Beenden | Beenden eines logischen Vorgangs |
Empfehlungen für Protokollierungseinstellungen
- Verwenden Sie für den normalen Betrieb die
Off
-Einstellung, um die Protokollierung vollständig zu vermeiden oder verwenden Sie die EinstellungenError
oderWarning
, die das Protokoll klein halten, aber die Administratoren auf Probleme aufmerksam machen. - Verwenden Sie die
All
-Einstellung für Support-/Problembehandlungssituationen. - Verwenden Sie
ActivityTracing
zur Leistungsmessung oder Nutzungsüberwachung. - Verwenden Sie
Information
nur, wenn Sie bereit sind, die Protokolle regelmäßig zu überprüfen und zu reinigen. Die Protokolle können mit dieser Einstellung langwierig werden. Diese Einstellung ist hilfreich, um die Nutzung und das Nutzungsverhalten zu verfolgen. - Verwenden Sie
Verbose
oderAll
nicht unter normalen Betriebsbedingungen, da die Menge der aufgezeichneten Daten die Leistung beeinträchtigt.
Schritte zum Erstellen einer Protokolldatei für den Produktsupport
In Situationen, in denen ein unerwarteter Fehler auftritt und weitere Diagnosen erforderlich sind, ist es hilfreich, eine Protokolldatei zu erstellen, die die Ereignisse verfolgt, die zu dem Problem führen, zusammen mit den Dienstanforderungen und -antworten.
Führen Sie die folgenden Schritte aus, um eine präzise und hilfreiche Protokolldatei zu erstellen:
Achtung
Durch das Aktualisieren von Web.config wird die MDS-Anwendungsdomäne in IIS wiederverwendet.
Beenden Sie ggf. den MDS-Anwendungspool im IIS-Manager.
Warnung
Tun Sie dies nur, wenn die Anwendung offline geschaltet werden kann.
Verschieben oder löschen Sie ggf. die aktuelle Protokolldatei (sofern bereits vorhanden).
Öffnen Sie die Datei „Web.config“ mit einem Text-Editor.
Hinweis
Standardmäßig befindet sich die Datei "Web.config" in einem der folgenden Webanwendungsordner:
- SQL Server 2008 R2: program_files\Microsoft SQL Server\Master Data Services\WebApplication
- SQL Server 2012: program_files\Microsoft SQL Server\110\Master Data Services\WebApplication
Suchen Sie nach dem Abschnitt
system.diagnostics
.Ändern Sie das
switchValue
inAll
oderActivityTracing
und heben Sie die Kommentierung der Protokolldateizeile auf, wie im Abschnitt Einschalten der Protokolldateiverfolgung dieses Artikels gezeigt.- Verwenden Sie
switchValue="All"
für die Fehlerdiagnose. - Verwenden Sie
switchValue="ActivityTracing"
für die Leistungsdiagnose. - Der MdsTrace.log-Dateiname kann bei Bedarf einem Pfad vorangestellt werden.
- Verwenden Sie
Wenn der Anwendungspool zuvor beendet wurde, starten Sie den MDS-Anwendungspool in IIS. Oder warten Sie, bis die Protokolldatei nach einiger Zeit und Webanwendungsaktivitäten angezeigt wird. Die Webanwendung lädt Konfigurationseinstellungen in regelmäßigen Abständen aus der Datei neu (sollte innerhalb von Minuten sein).
Reproduzieren Sie das Problem, und führen Sie dieselben Aktionen oder Anforderungen aus, die zu dem Fehler geführt haben.
Wenn Sie den Anwendungspool beenden können:
- Beenden Sie den Anwendungspool.
- Rufen Sie die Protokolldatei ab (Möglicherweise müssen Sie warten, bis Prozesse abgeschlossen sind. Nach dem Beenden des App-Pools kann es zu einer Verzögerung kommen).
Oder öffnen Sie die Protokolldatei mit einem Editor, der die Datei nicht sperrt (z. B. notepad.exe) und kopieren Sie die relevanten Ablaufverfolgungsmeldungen.
Öffnen Sie die Datei "Web.config" mithilfe eines Text-Editors und wechseln Sie
switchValue
zurück zuOff
oder zum vorherigen Wert.Starten Sie den Anwendungspool, wenn er beendet wurde.
Fehlerbehandlung: Alle Dienstvorgänge geben ein Array oder eine Sammlung von Fehlern innerhalb des
OperationResult
-Objekts einer Antwortnachricht zurück. Wenn ein Fehler auftritt, wird das Fehlerarray auch in XML serialisiert und in die Webanwendungsprotokolldatei für bestimmteswitchValue
-Einstellungen geschrieben, wie oben beschrieben.
Beispiel für einen API-Antwortfehler, der in die Protokolldatei geschrieben wurde:
MDS Error: 0 :
<ArrayOfError xmlns="http://schemas.microsoft.com/sqlserver/masterdataservices/2009/09" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Error>
<Code>110003</Code>
<Context>
<FullyQualifiedName>Model1</FullyQualifiedName>
<Identifier>
<Id>00000000-0000-0000-0000-000000000000</Id>
<Name>Model1</Name> <InternalId>0</InternalId>
</Identifier>
<Type>Model</Type>
</Context>
<Description>The name already exists. Type a different name.</Description>
</Error>
</ArrayOfError>
DateTime=2009-12-10T20:48:05.6949548Z error object contents
Wie im obigen Beispiel gezeigt, enthält jeder Fehler die folgenden Dateneigenschaften:
Eigenschaft | Beschreibung |
---|---|
Code | Die eindeutige Fehlernummer, die den Typ des Fehlers identifiziert |
Beschreibung | Lokalisierter Fehlermeldungstext |
Context.FullyQualifiedName | Der vollqualifizierte Name des Objekts, das an dem Fehler beteiligt ist. Einige Namen sind nur innerhalb ihres Kontexts eindeutig. Eine Entität wäre mit einem Modellnamenpräfix wie ModelName : EntityName qualifiziert. |
Context.Type | Der Typ des Objekts, das an dem Fehler beteiligt ist |
Context.Identifier | Der Bezeichner des Objekts, das an dem Fehler beteiligt ist |
Context.Identifier.Id | Die eindeutige GUID des Objekts, sofern angegeben oder verfügbar |
Context.Identifier.Name | Der Name des Objekts, sofern angegeben oder verfügbar |
Context.Identifier.InternalId | Veraltet – nicht verwenden |
Ablaufverfolgung von MDS-Datenbankerstellungsproblemen
Mit dem folgenden Verfahren können Sie eine Protokolldatei erstellen, die bei der Fehlersuche im Zusammenhang mit der Erstellung einer MDS-Datenbank helfen kann:
Öffnen Sie die Datei MDSConfigTool.exe.config im Pfad C:\Program Files\Microsoft SQL Server\Master Data Services\Configuration, indem Sie notepad.exe verwenden.
Heben Sie die Auskommentierung der folgenden Zeile in der Datei auf, indem Sie die -Suffixzeichen in dieser Zeile entfernen:
<add name="LogFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="MdsConfigManagerTrace.log" traceOutputOptions="DateTime"/>
Stellen Sie sicher, dass
switchValue
aufAll
festgelegt ist.<source name="MDS" switchType="System.Diagnostics.SourceSwitch" switchValue="All">
Versuchen Sie es erneut, um die Datenbank zu erstellen. Öffnen Sie dann die Datei MdsConfigManagerTrace.log, die in C:\Program Files\Microsoft SQL Server\Master Data Services\Configuration gespeichert ist und überprüfen Sie dies auf andere Informationen zum Fehler.