Подібно трасі за замовчуванням (defaul trace), system health - це сесія Extended Events, яка автоматично запускається, коли екземпляр SQL Server стартує і збирає інформацію про те, що відбувається на сервері.
З BOL можна дізнатися, що вона збирає:
- Помилки з терміновістю> = 20
- Помилки, пов'язані з пам'яті (17803, 701, 802, 8645, 8651, 8657 і 8902)
- Дедлок
- Сесії, які очікували блокування більше 30 секунд
- Помилки CLR allocation virtual allocation
- і т.д.
Найбільш корисні події, це помилки, Дедлок і очікування блокувань. Зверніть увагу, що system_health повертає іншу інформацію, ніж траса за замовчуванням.
Добре, ми збираємо дані, але де вони зберігаються? Якщо ви подивіться в SSMS, ви побачите 2 місця зберігання:
Перше місце зберігання знаходиться на файловій системі і файли мають назви типу system_heals * .xel, зверніть увагу, що подібних файлів зазвичай кілька, за винятком моментів, коли SQL Server був зовсім недавно встановлений, зберігаються вони приблизно за наступним шляхом C: \ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ Log. Друге місце зберігання знаходиться орієнтовно по шляху Program Files \ Microsoft SQL Server \ 130 \ Setup Bootstrap \ Log \, тут файли так само мають назву типу system_health * .xel, але довжина назви значно більше.
Тепер ми знає що таке system_health сесія і де вона зберігається, але як же нам подивитися що вона збирає?
Вичерпну інформацію ви можете знайти тут. Рассмторім основні можливості:
Ви можете відкрити 1 або більше файлів * .xel через SSMS
Подивитися поточну сесію через «View target data»
Коли ви відкриваєте друге місце зберігання (ring_buffer), то ви отримаєте інформацію у вигляді XML, яку не так просто зрозуміти.