SQL Server-Verlauf von Wachstums- und Verkleinerungsereignissen

7

Gibt es eine Möglichkeit, die gesamte Geschichte der Wachstums- und Verkleinerungsereignisse der letzten Wochen / Monate in SQL Server 2014 anzuzeigen? (Neue zu unterstützende Instanzen, die vom Ticketing-System festgestellt wurden, dass sie in der Vergangenheit "Protokolllaufwerk voll" hatten, möchten sich daher mit der Grundursache befassen, bevor sie erneut auftritt.)

Dies war nützlich: Identifizieren von Dateiwachstumsereignissen . Die folgende Abfrage wurde angezeigt, es werden jedoch keine der "manuellen" Protokollverkleinerungsereignisse angezeigt, sondern nur die "automatischen" Ereignisse. Mache ich das falsch, an einem anderen Ort, um nach Informationen aus der Vergangenheit zu suchen?

select
    te.name as event_name,
    tr.DatabaseName,
    tr.FileName,
    tr.IntegerData,
    tr.IntegerData2,
    tr.LoginName,
    tr.StartTime,
    tr.EndTime
--select * 
from 
sys.fn_trace_gettable(convert(nvarchar(255),(select value from sys.fn_trace_getinfo(0) where property=2)), 0) tr
inner join sys.trace_events te on tr.EventClass = te.trace_event_id
where 
tr.EventClass in (93, 95) --can't identify any other EventClass to add here
order by 
EndTime desc;
Razvan Zoitanu
quelle

Antworten:

3

Gibt es eine Möglichkeit, die gesamte Geschichte der Wachstums- und Verkleinerungsereignisse der letzten Wochen / Monate in SQL Server 2014 anzuzeigen?

Ja, es gibt eine Möglichkeit, oder sollte ich verschiedene Möglichkeiten zum Speichern der aus der Standardablaufverfolgung gesammelten Daten nennen, wie hier erläutert. Sammeln der Informationen in der Standardablaufverfolgung

  1. Wir könnten die Standard-Trace-Dateien abfragen und aggregierte Werte speichern
  2. Wir könnten die Definition des Standard-Trace abrufen und einen Sammlungssatz erstellen, der mit Management Data Warehouse verwendet werden kann, das in SQL Server integriert ist.
  3. Wir könnten die Definition des Standard-Trace abrufen und einen Remote-Trace von einem anderen Server erstellen und die Daten in einer Datenbanktabelle speichern
  4. Wir könnten ein Robocopy-Skript verwenden, um die Tracedateien von unserem Server in einen anderen Ordner oder auf einen Remotecomputer zu kopieren, wodurch die Dateien länger auf der Festplatte verbleiben und wir die Möglichkeit haben, sie zu analysieren

Die folgende Abfrage wurde angezeigt, es werden jedoch keine der "manuellen" Protokollverkleinerungsereignisse angezeigt, sondern nur die "automatischen" Ereignisse. Mache ich das falsch, an einem anderen Ort, um nach Informationen aus der Vergangenheit zu suchen? Um die manuellen Verkleinerungsereignisse zu erfassen, verwende ich die folgende Abfrage:

SELECT 
    TextData,
    HostName,
    ApplicationName,
    LoginName, 
    StartTime  
FROM 
[fn_trace_gettable]('C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log\log_75.trc', DEFAULT) 
WHERE TextData LIKE '%SHRINKFILE%'; ----- Location of default trace will be different ,so kindly check that accordingly

Der wahrscheinliche Grund, warum Ihre Abfrage keine manuellen Vergrößerungs- oder Verkleinerungsereignisse anzeigt, da Sie Ereignisse wie (93, 95) verwenden, die für Ereignisse mit automatischer Vergrößerung vorgesehen sind

KASQLDBA
quelle
Die Frage ist, ob diese "manuellen" Ereignisse dort überhaupt protokolliert werden. Basierend darauf sind sie nicht? wählen unterschiedliche Namen von sys.fn_trace_geteventinfo (1) ei Exklusionsverknüpfung sys.trace_events e auf e.trace_event_id = ei.eventid
Razvan Zoitanu
Verstanden: wo tr.EventClass in (93, 95) oder tr.TextData wie 'DBCC SHRINK%'
Razvan Zoitanu
@TheConfusedDBA, ja das ist richtig, die Abfrage in den Antwortfiltern verwendet Textdaten für alle Einträge, die manuell verwendet werden oder die manuelle Eingriffe zum Verkleinern von Protokolldateien beinhalten.
KASQLDBA
Für zukünftige Referenz: SELECT TOP 100 , Textdata, Host - Name, Anwendungsname , Loginname, Starttime FROM [fn_trace_gettable] ( 'D: \ Programme \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ Log \ log_894.trc', Standard) / Ort Der Standard-Trace ist unterschiedlich. Überprüfen Sie daher bitte, ob * / where EventClass in (93, 95) oder TextData wie 'DBCC SHRINK%';
Razvan Zoitanu
10

Gibt es eine Möglichkeit, die gesamte Geschichte der Wachstums- und Verkleinerungsereignisse der letzten Wochen / Monate in SQL Server 2014 anzuzeigen?

Es gibt eine einfache Möglichkeit, Informationen über das automatische Wachstum von Daten / Protokolldateien und das automatische Verkleinern von Ereignissen aus Datenbankberichten abzurufen. Der Bericht ruft Daten aus der Standardablaufverfolgung ab. Ich bin nicht sicher, wie aktuell Ihr Bericht sein würde, der davon abhängt, wann die Standardablaufverfolgung verlängert wurde. Die Standardgröße ist 20 MB. Danach wird ein Rollover durchgeführt. Beachten Sie außerdem, dass der Trace nach dem Neustart von SQL Server einen Rollover durchführt

Stellen Sie eine Verbindung zur SQL Server-Instanz her, klicken Sie mit der rechten Maustaste auf die Datenbank, wählen Sie Berichte und dann Standardberichte aus und klicken Sie dann auf Datenträgerverwendung.

In dem Bericht, der gesucht Data/log file autogrowt auto shrink eventsund erweitert wird, befindet sich + signdieser direkt unter dem zirkulären Verwendungsbericht. Der Bericht würde wie folgt aussehen.

In meinem Fall wurde nur ein Autogrowth-Ereignis gemeldet, da ich keine automatische Schrumpfung oder keine Schrumpfaktivität habe, von der ich denke, dass Sie wissen, dass sie äußerst schlecht ist.

Geben Sie hier die Bildbeschreibung ein

Shanky
quelle
Warnung: Das Abrufen dieses Berichts hat mein SQL Management Studio zum Absturz gebracht und ich habe einige Arbeit verloren. Sichern Sie Ihre offenen Abfragen, bevor Sie ausgefallene Berichte ausführen!
Ali
4
Das muss ein Fehler mit SSMS sein oder ein böses Problem auf Ihrem System. Welche SSMS-Version Sie verwenden, ist hoffentlich auf den neuesten SP gepatcht. Ich habe nicht von niemandem zu hören , dass dieser Bericht SSMS abgestürzt immer
Shanky