13.4.23

Tips for DBA: Оповещение о новых дампах SQL Server

Не существует рекомендованного Майкрософт способа уведомления администраторов о том, что SQL Server выгрузил дамп страниц памяти на диск. Также весьма затруднительно отслеживать такие дампы средствами SQL Server или операционной системы, поскольку во время выгрузки дампа работа сервера баз данных и большинства системных процессов «замирает». Однако, вполне возможно обнаружить последствия выгрузки дампа, поскольку в указанной для дампов папке вместе с файлами дампа появится файл с именем: «SQLDUMPER_ERRORLOG.log». Имя этого файла неизменно, на этом и основан предлагаемый вашему вниманию способ слежений за появлением новых дампов. Настройка пути к папке дампов хранится в системном реестре. По этому пути можно посредством PowerShell узнать существует ли в папке дампов файл с именем «SQLDUMPER_ERRORLOG.log». Такую проверку можно делать по расписанию в задании Агента SQL Server. Если файл обнаружен, то можно совершить необходимое действие. Например, в приведенном ниже сценарии будет отправлено письмо электронной почты на указанный список адресов. Отправку осуществит подсистема SQL Server DatabaseMail. Для корректной отправки сообщения нужно указать существующий почтовый профиль.

Обычно, администраторы изучают причины, вызвавшие создание дампа по файлам текстовых описаний дампа и логу. Вместе с этим можно переименовать и/или скопировать файлы дампа в другое место, или удалить. Также, можно составить сценарий PowerShell таким образом, чтобы необходимые действия выполнялись в дополнение к предлагаемому ниже примеру сценария:

USE master
SET NOCOUNT ON
DECLARE
@rootkey varchar(255), @File_Exists int, @value varchar(255), @key varchar(255), @value_name varchar(255)
EXEC xp_regread @rootkey = ‘HKEY_LOCAL_MACHINE’
,@key =‘SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL16.MSSQLSERVER\CPE’
,@value_name = ‘ErrorDumpDir
,@value = @value OUTPUT
SELECT
@value = @value + ‘SQLDUMPER_ERRORLOG.log’
EXEC master.dbo.xp_fileexist @value, @File_Exists OUT
IF
@File_Exists = 1 EXEC msdb.dbo.sp_send_dbmail @profile_name = ‘AlertProfile’
,@recipients = ‘СПИСОК АДРЕСОВ РАССЫЛКИ’
,@subject = ‘Обнаружен новый DUMP’
,@body = ‘Обнаружен новый DUMP’

Комментариев нет:

Отправить комментарий