Настройка SQL Server Analysis Services для создания файлов дампа памяти
В этой статье описывается настройка SQL Server Analysis Services для автоматического создания файлов дампа памяти.
Оригинальная версия продукта: SQL Server
Исходный номер базы знаний: 919711
Введение
В этой статье описывается настройка сборок Microsoft SQL Server Analysis Services (SSAS) 2012 или более поздних версий для автоматического создания различных типов файлов дампа памяти при обнаружении исключений. В этой статье также описывается, как вручную получить файл дампа памяти для процесса SQL Server Analysis Services с помощью служебной программы Sqldumper.exe.
Дополнительная информация
По умолчанию SQL Server Analysis Services автоматически создает файлы minidump при возникновении исключения. Для установки по умолчанию файлы minidump записываются в расположение по умолчанию:
Версия служб Analysis Services | Расположение |
---|---|
2019 | %ProgramFiles%\Microsoft SQL Server\MSAS15.InstanceName\OLAP\log |
2017 | %ProgramFiles%\Microsoft SQL Server\MSAS14.InstanceName\OLAP\log |
2016 | %ProgramFiles%\Microsoft SQL Server MSAS13.InstanceName\OLAP\log |
2014 | %ProgramFiles%\Microsoft SQL Server MSAS12.InstanceName\OLAP\log |
2012 | %ProgramFiles%\Microsoft SQL Server MSAS11.InstanceName\OLAP\log |
Примечание.
InstanceName — это заполнитель для соответствующего значения для SQL Server Analysis Services версии.
Расположение журнала SQL Server Analysis Services экземпляра можно изменить после установки, чтобы проверить расположение журнала, просмотрив файл msmdsrv.ini для установленного SQL Server Analysis Services.
Чтобы определить соответствующее значение для системы, определите значение ключа регистрации ImagePath. Он должен содержать путь к пути Config, содержащий msmdsrv.ini.
Версия служб Analysis Services | Подраздел реестра |
---|---|
Экземпляр по умолчанию | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSSQLServerOLAPService\ImagePath |
Именованный экземпляр | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MSOLAP$InstanceName\ImagePath |
Файлы minidump будут содержать следующие сведения:
Все стеки потоков
Память второго порядка, на которую ссылаются указатели в стеке
Сведения о блоке среды обработки (PEB)
Сведения о блоке среды потока (TEB)
Сведения о недавно выгруженных модулях
Сведения о состоянии потока
Создание файла дампа памяти управляется раздел "Исключение" в файле Msmdsrv.ini. Файл по умолчанию находится в папке %ProgramFiles%\Microsoft SQL Server\MSASxx.InstanceName\OLAP\Config
. MSASxx — это заполнитель для соответствующей версии службы SQL Server Analysis Service. При открытии файла в Блокноте вы увидите раздел в XML-теге Exception, который выглядит следующим образом:
<Exception>
<CreateAndSendCrashReports>1</CreateAndSendCrashReports>
<CrashReportsFolder/>
<SQLDumperFlagsOn>0x0</SQLDumperFlagsOn>
<SQLDumperFlagsOff>0x0</SQLDumperFlagsOff>
<MiniDumpFlagsOn>0x0</MiniDumpFlagsOn>
<MiniDumpFlagsOff>0x0</MiniDumpFlagsOff>
<MinidumpErrorList>0xC1000000, 0xC1000001, 0xC1000016, 0xC11D0005, 0xC102003F</MinidumpErrorList>
<ExceptionHandlingMode>0</ExceptionHandlingMode>
<CriticalErrorHandling>1</CriticalErrorHandling>
</Exception>
Вы можете управлять поведением создания файла дампа памяти, изменив параметры в этом разделе. Эти параметры также можно изменить в SQL Server Management Studio. Дополнительные сведения об этих параметрах см. на веб-сайте SQL Server Management Studio скачивания: Свойства журнала.
Отключение файла автоматического дампа памяти для служб Analysis Services
Значение параметра CreateAndSendCrashReports определяет, будет ли создан файл дампа памяти. Этот параметр может иметь одно из значений, перечисленных в следующей таблице.
Значение | Описание |
---|---|
0 | Это значение указывает, что службы Analysis Services не создают файл дампа памяти. Кроме того, значение других параметров в разделе Исключения игнорируется. |
1 | Это значение по умолчанию включает файл дампа памяти. Однако SQL Server Analysis Services не отправляет отчет об ошибке в корпорацию Майкрософт. |
2 | Это значение указывает, что SQL Server Analysis Services создает файл дампа памяти и отправляет отчет об ошибке в корпорацию Майкрософт. |
Если для параметра CreateAndSendCrashReports задано значение 1 или 2, другие параметры в разделе Исключения могут управлять типом файла дампа памяти и информацией, которую следует включить в файл дампа памяти.
Настройка SQL Server Analysis Services для автоматического создания полного файла дампа
Чтобы настроить SQL Server Analysis Services автоматическое создание полного файла дампа при возникновении исключения, можно задать для параметра SQLDumperFlagsOn значение 0x34. Кроме того, если вы хотите настроить SQL Server Analysis Services для создания полного файла дампа, содержащего сведения о дескрипторе, можно задать для параметра SQLDumperFlagsOn значение 0x34, а для параметра MiniDumpFlagsOn — 0x4. Например, раздел Исключения в файле Msmdsrv.ini может выглядеть следующим образом:
<Exception>
<CreateAndSendCrashReports>1</CreateAndSendCrashReports>
<CrashReportsFolder/>
<SQLDumperFlagsOn>0x34</SQLDumperFlagsOn>
<SQLDumperFlagsOff>0x0</SQLDumperFlagsOff>
<MiniDumpFlagsOn>0x4</MiniDumpFlagsOn>
<MiniDumpFlagsOff>0x0</MiniDumpFlagsOff>
<MinidumpErrorList>0xC1000000, 0xC1000001, 0xC1000016, 0xC11D0005, 0xC102003F</MinidumpErrorList>
<ExceptionHandlingMode>0</ExceptionHandlingMode>
<CriticalErrorHandling>1</CriticalErrorHandling>
</Exception>
Создание полного файла дампа, включающего сведения об обработке вручную
Для устранения таких проблем, как сервер, который перестает отвечать (зависает), может потребоваться создать полный файл дампа, который включает обработку данных вручную. Для этого можно запустить служебную программу Sqldumper.exe в командной строке вместе со следующими аргументами:
Sqldumper.exe PID 0 0x34:0x4 0 PathToDumpFile
Примечание.
PID представляет идентификатор процесса SQL Server Analysis Services процесса. PathToDumpFile представляет папку, в которую записывается файл дампа.
Эту команду необходимо выполнить из общего каталога, в котором установлен экземпляр, или указать полный путь к файлу Sqldumper.exe в команде .
Версия служб Analysis Services | Расположение |
---|---|
2019 | %ProgramFiles%\Microsoft SQL Server\150\Shared |
2017 | %ProgramFiles%\Microsoft SQL Server\140\Shared |
2016 | %ProgramFiles%\Microsoft SQL Server\130\Shared |
2014 | %ProgramFiles%\Microsoft SQL Server\120\Shared |
2012 | %ProgramFiles%\Microsoft SQL Server\110\Shared |
Например, каталог по умолчанию для запуска sqldumper.exe для SQL Server Analysis Services 2019 — .C:\Program Files\Microsoft SQL Server\1590\Shared
Дополнительные сведения
Параметр SQLDumperFlagsOn можно использовать для указания различных флагов SQLDumper. В следующей таблице перечислены значения битовой маски, которые можно использовать в качестве значения для параметра флага.
Мнемоническое имя | Шестнадцатеричное значение | Описание |
---|---|---|
SQLDUMPER_DBGBREAK | 0x0001 | Этот флаг заставляет служебную программу Sqldumper.exe запускать вызов API DebugBreak в начале программы при анализе параметров. Как правило, специалисты службы поддержки продуктов Майкрософт не используют этот флаг, так как флаг используется только для отладки Sqldumper.exe проблем со служебной программой. Примечание Этот флаг прерывает процесс Sqldumper.exe. Этот флаг не прерывает процесс отладки служебной программы Sqldumper.exe. |
SQLDUMPER_NOMINIDUMP | 0x0002 | При использовании этого флага служебная программа Sqldumper.exe не создает файл дампа. Этот флаг используется для тестирования служебной программы Sqldumper.exe. |
SQLDUMPER_NOWATSON | 0x0004 | Как правило, этот флаг используется при создании файлов дампа вручную. Этот флаг переопределяет поведение отчетов об ошибках по умолчанию. По умолчанию файл дампа отправляется на сайт отчетов об ошибках, настроенный в реестре. |
SQLDUMPER_REFERENCED_MEMORY | 0x0008 | Этот флаг заставляет служебную программу Sqldumper.exe задать флаг MiniDumpWithIndirectlyReferencedMemory для параметра MiniDumpType при вызове функции MiniDumpWritedump. Память для указателей (только на одном уровне), которые основаны на стеке (параметры или локальные переменные), будет храниться в файле дампа. Тестирование показывает, что некоторые локальные параметры, основанные на данных локального хранилища потока (TLS), такие как вероятностная схема подписи (PSS) и структуры EC, не работают даже при установке этого флага. |
SQLDUMPER_ALL_MEMORY | 0x0010 | Этот флаг заставляет служебную программу Sqldumper.exe задать флагMiniDumpWithFullMemory для MiniDumpType, когда служебная программа вызывает функцию MiniDumpWriteDump. Это поведение аналогично использованию команды .dump /mf в отладчике. Однако для включения всех стеков потоков необходимо также задать для флага SQLDUMPER_DUMP_ALL_THREADS значение включено. |
SQLDUMPER_DUMP_ALL_THREADS | 0x0020 | Этот флаг не требуется, если вы вручную запускаете служебную программу Sqldumper.exe и указываете значение параметра ThreadId, равное 0. Значение параметра ThreadId, равное 0, указывает, что все потоки должны быть дампами. Если указать определенное значение параметра ThreadId, отличное от нуля, но вы также используете этот флаг, все потоки записываются в файл дампа. Этот флаг существует потому, что типичное поведение в процессе Sqlservr.exe заключается в передаче текущего значения свойства ThreadId потока, который порождает процесс Sqlservr.exe. При таком поведении флаг необходим в качестве параметра для дампа всех потоков. |
SQLDUMPER_MATCH_FILE_NAME | 0x0040 | Этот флаг можно использовать, чтобы попытаться заставить служебную программу Sqldumper.exe создать имя файла дампа, похожее на определенное соглашение об именовании. Это конкретное соглашение об именовании может быть основано на существующем имени файла. Так как необходимо настроить специальную структуру памяти, содержащую существующее имя файла в собственной программе, а затем передать этот указатель в служебную программу Sqldumper.exe в качестве параметра SqlInfoPtr, этот флаг не полезен при запуске программы Sqldumper.exe вручную. |
SQLDUMPER_SKIP_DW_REG_READ | 0x0080 | Этот флаг приводит к тому, что служебная программа Sqldumper.exe не будет использовать реестр в качестве пути для выполнения программы Dw15.exe. Программа Dw15.exe используется для отправки файлов дампа на сайт отчетов об ошибках. |
SQLDUMPER_VERBOSE | 0x0100 | Этот флаг может быть полезным, если вы не уверены в параметрах, которые, по мнению служебной программы Sqldumper.exe, используются в качестве входных данных. При использовании этого флага служебная программа Sqldumper.exe отображает значения параметров и количество значений параметров, указанных в командной строке. |
SQLDUMPER_WAIT_AT_EXIT | 0x0200 | Этот флаг можно использовать для присоединения отладчика к служебной программе Sqldumper.exe. Этот отладчик можно использовать для устранения любых проблем с Sqldumper.exe служебной программой. Эти проблемы особенно могут возникать, когда служебная программа Sqldumper.exe порождена Sqlservr.exe или другой программой. При установке этого флага служебная программа Sqldumper.exe вызывает функцию SleepEx в течение 15 секунд непосредственно перед Sqldumper.exe программой и после завершения всех остальных операций. |
SQLDUMPER_FILTERED | 0x0800 | Этот флаг можно использовать для создания отфильтрованного файла дампа. SQL Server Analysis Services пока не поддерживает этот флаг. |
Вы можете использовать параметр MiniDumpFlagsOn, чтобы указать флаги minidump. В следующей таблице перечислены доступные флаги minidump:
Вариант | Значение | Описание |
---|---|---|
MiniDumpNormal | 0x00000000 | Создайте типичный файл мини-дампа, использующий перезапись. |
MiniDumpWithDataSegs | 0x00000001 | Включите сегмент данных для всех загруженных модулей. Флаг, в который загруженные модули получают глобальные переменные. |
MiniDumpWithFullMemory | 0x00000002 | Создайте полный файл дампа пользователя. Отфильтрованный файл дампа отключается при установке флага. |
MiniDumpWithHandleData | 0x00000004 | Включите сведения о дескрипторе. |
MiniDumpFilterMemory | 0x00000010 | Память стека и резервного хранилища должна проверяться на наличие ссылок указателей на модули в списке модулей. Пользователь не должен использовать этот флаг для SQL Server Analysis Services. |
MiniDumpWithUnloadedModules | 0x00000020 | Этот флаг предоставляет сведения о недавно выгруженных модулях. Только Microsoft Windows XP и Microsoft Windows Server 2003 поддерживают этот флаг. Операционная система не хранит сведения о выгруженных модулях до Windows Server 2003 с пакетом обновления 1 (SP1) и Windows XP с пакетом обновления 2 (SP2). |
MiniDumpWithIndirectlyReferencedMemory | 0x00000040 | Включите страницы, на которые ссылаются локальные данные или другая память стека. |
MiniDumpFilterModulePaths | 0x00000080 | Если путь к модулю удален из сведений о модуле, не используйте этот флаг. |
MiniDumpWithProcessThreadData | 0x00000100 | Этот флаг содержит сведения о блоке среды обработки (PEB) и блоке среды потока (TEB). |
MiniDumpWithPrivateReadWriteMemory | 0x00000200 | Проверьте виртуальное адресное пространство на наличие других типов памяти для включения. |
MiniDumpWithoutOptionalData | 0x00000400 | Уменьшите объем данных, которые создаются в дампе, исключив не нужные области памяти. Сделайте это, чтобы соответствовать условиям, заданным для файла дампа. Использование этого флага позволяет избежать дампа памяти, которая может содержать данные, которые являются частными для пользователя. Однако это не гарантирует отсутствие личной информации. Не используйте этот флаг. |
MiniDumpWithFullMemoryInfo | 0x00000800 | Включите описательные сведения о регионе памяти с перечислением. |
MiniDumpWithThreadInfo | 0x00001000 | Включите сведения о состоянии потока. |
MiniDumpWithCodeSegs | 0x00002000 | Включите разделы кода и связанные с кодом разделы для всех загруженных модулей. |
Ссылки
Использование служебной программы Sqldumper.exe для создания файла дампа в SQL Server
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по