Ich entdecke eine Reihe von DBs in meinem Portfolio, die mit Standardeinstellungen für das automatische Wachstum (entweder in Schritten von 1 MB oder in Schritten von 10%) erstellt wurden und über einen längeren Zeitraum erweitert wurden. Wenn ich den Umfang der externen Fragmentierung für jede der DB-Dateien messen möchte, kann ich dann anhand von Metadaten ermitteln, wie oft eine DB-Datei in ihrer Größe geändert wurde (entweder durch automatisches Wachstum oder manuell)? Kann ich aus Metadaten den Verlauf von Änderungen an DB-Dateien für die Lebensdauer der DB abrufen, nicht nur seit dem Neustart der Instanz?
sql-server
datafile
MattyZDBA
quelle
quelle
Antworten:
Sie können Autogrowth-Ereignisinformationen aus dem Standard-Trace abrufen, wenn dieser aktiviert ist:
Daraus können Sie ersehen, dass in der Standardablaufverfolgung die Ereignisse " Datei automatisch wachsen" und " Protokolldatei automatisch wachsen" erfasst werden. Sie können Folgendes tun, um festzustellen, ob für diese Instanz die Standardablaufverfolgung aktiviert ist:
Hinweis: Dies ist eine erweiterte Konfigurationsoption. Sie müssen daher
show advanced options
auf 1 gesetzt werden, um diese Konfigurationsoption anzuzeigensp_configure
. Außerdem werden diese beiden Ereignisse nicht ausgelöst, wenn die Datei manuell vergrößert wurde .Hier ist eine kurze Beispielabfrage, um diese Ereignisse abzurufen:
Und Sie können
<Trace Path>
von der Systemfunktion erhaltensys.fn_trace_getinfo
:quelle