Puoi scoprire tutti questi eventi che si trovano nel ciclo del registro eventi corrente usando sp_readerrorlog
:
EXEC sys.sp_readerrorlog @p1 = 0, @p2 = 1, @p3 = N'OFFLINE';
È possibile scorrere i valori di @p1
se non lo si trova nel registro eventi corrente. Per impostazione predefinita, dovresti essere in grado di leggere i file di registro degli errori 6 correnti e precedenti, quindi usa 0-6 come argomenti lì per tornare il più lontano possibile (sul mio sistema non sono riuscito a ottenere 0
/ NULL
aggregare tutti i file di registro; YMMV ).
Restituirà qualcosa del genere:
LogDate ProcessInfo Text
------------- ----------- ---------------------------------------------------------
yyyy-mm-dd... spid72 Setting database option OFFLINE to ON for database 'foo'.
È possibile, ovviamente, che il registro degli errori venga popolato abbastanza che gli eventi si siano verificati prima dell'attuale serie di registri degli errori. In tal caso, sei sfortunato. Per mantenere una cronologia di esecuzione più lunga in futuro, è possibile modificare il numero di log degli errori che vengono conservati. In Esplora oggetti espandere Gestione, fare clic con il pulsante destro del mouse su Log di SQL Server e selezionare Configura. Lì puoi modificare le impostazioni di riciclaggio dei file di registro degli errori, incluso il mantenimento dei 99 file precedenti. Vedi anche questa risposta .
Si noti che sp_readerrorlog
non è documentato e non supportato, anche se molte persone ne hanno scritto . Alla fine, i file di registro degli errori sono solo file di testo semplice, quindi è possibile scrivere il proprio PowerShell, CLR ecc. Che analizza i file e restituisce le stesse informazioni. È possibile determinare dove si trovano i file di registro degli errori per questa istanza utilizzando:
SELECT SERVERPROPERTY('ErrorLogFileName');
I file saranno chiamati ERRORLOG
, ERRORLOG.1
, ERRORLOG.2
, ecc Si può andare e aprire i file in un editor di testo di base per vedere la struttura, anche se vorrei essere cauti circa l'apertura del file corrente in uso ( ERRORLOG
).