Anda dapat menemukan semua peristiwa ini yang ada di siklus log peristiwa saat ini menggunakan sp_readerrorlog
:
EXEC sys.sp_readerrorlog @p1 = 0, @p2 = 1, @p3 = N'OFFLINE';
Anda bisa melihat-lihat nilai @p1
jika Anda tidak menemukannya di log peristiwa saat ini. Secara default Anda harus bisa membaca 6 file log kesalahan saat ini dan sebelumnya, jadi gunakan 0-6 sebagai argumen di sana untuk kembali sejauh mungkin (pada sistem saya, saya tidak bisa mendapatkan 0
/ NULL
menggabungkan semua file log; YMMV ).
Akan mengembalikan sesuatu seperti ini:
LogDate ProcessInfo Text
------------- ----------- ---------------------------------------------------------
yyyy-mm-dd... spid72 Setting database option OFFLINE to ON for database 'foo'.
Ada kemungkinan, tentu saja, bahwa log kesalahan akan cukup diisi sehingga peristiwa (s) terjadi sebelum set log kesalahan saat ini. Dalam hal ini, Anda kurang beruntung. Untuk menjaga riwayat berjalan yang lebih lama di masa mendatang, Anda dapat mengubah jumlah log kesalahan yang disimpan. Di Object Explorer, rentangkan Manajemen, klik kanan SQL Server Log, dan pilih Configure. Di sana Anda dapat mengubah pengaturan daur ulang file log kesalahan, termasuk menjaga hingga 99 file sebelumnya. Lihat juga jawaban ini .
Catatan yang sp_readerrorlog
tidak berdokumen dan tidak didukung, meskipun banyak orang telah menulis tentang itu . Pada akhirnya, file log kesalahan hanyalah file teks biasa, sehingga Anda dapat menulis PowerShell, CLR dll. Anda sendiri yang hanya mem-parsing file dan mengembalikan informasi yang sama. Anda dapat menentukan di mana file log kesalahan untuk contoh ini menggunakan:
SELECT SERVERPROPERTY('ErrorLogFileName');
File-file akan diberi nama ERRORLOG
, ERRORLOG.1
, ERRORLOG.2
, dll Anda dapat pergi dan membuka file dalam editor teks dasar untuk melihat struktur, meskipun saya akan berhati-hati tentang membuka file saat digunakan ( ERRORLOG
).