2012-03-28 7 views
0
.

. Чтобы просочиться через информацию, пытающуюся восстановить последовательность событий, которые привели к сбою вчера, и действительно заинтересовался поиском решения для выгрузки событий из SQL Server в журнал событий. Google дает лишь single promising result, со ссылкой на a guide on creating custom event logs ..Перенаправление событий SQL Server из std. Журнал приложений в пользовательский.

Хотя я бы не пойти так далеко, чтобы называть события SQL pointless (хотя согласился, 17101 и 17103 написание из "(с) 20 ?? Microsoft Corporation »и« ».« при каждом повторном запуске - определенная трата! »,
IMHO было бы полезно и полезно повторно перенаправить события SQL в свой собственный журнал!
Ад, даже у IE есть один, встроенный! Почему SQL Server не может использовать это как лучшую практику для реализации? Особенно на Vista/Win7, который предоставляет тонны отдельных журналов для загрузки других приложений - совершенно бесполезный IMHO (никогда не нужно было там копаться), но заставляя пользовательский интерфейс медленно сканировать каждый раз, когда вы его открываете:

Snapshot of Event Log view in MMC on Win7

Я успешно следую рекомендациям по созданию пользовательского журнала SQLServer, добавляю к нему исходные определения. К сожалению, любые попытки изменить маршрут событий SQL на него, кажется, врезаться в вопрос MSSQLSERVER (источник журнала сопоставление имени по умолчанию для службы SQL) будучи своим родом встроенного источника:

EventCreate /l "SQLServer" /t Information /so MSSQLSERVER /id 1 /d "Log created"
ERROR: Source parameter is used to identify custom application/scripts only (not built-in sources).

Когда я маркировать MSSQLSERVER под мой журнал, как CustomSource (DWORD = 1), то ошибка выше исчезает:

EventCreate /l "SQLServer" /t Information /so MSSQLSERVER /id 2 /d "New entry"
SUCCESS: A 'information' type event is created in the 'MSSQLSERVER' log/source.

и в самом деле событие с ID = 2, убывание = «Новая запись» добавляется к пользовательскому событию журнал!   Однако в этой конфигурации реальная служба MSSQLSERVER не записывает события ни в этот новый журнал, ни в стандартный журнал «Приложение»: (). Функциональность восстанавливается после восстановления определений журналов в реестре (перезагрузка не требуется!), Поэтому является обратимым сценарий.

Кроме того, из вышесказанного выглядит любой источник может быть связан только с одним журнал .. достаточно Logical. Но то, что определяет эти встроенный источников, то, если я удалить я бы хотел перезапустить машину после внесения этих изменений (хотя это не было необходимо для возврата назад)?

Неужели кто-нибудь изучал это дальше и, возможно, имел успех?

EDIT: До сих пор, как я сказал, там, кажется, единственный способ справиться с этим, отфильтровывая MSSQLSERVER (или другое имя службы SQL) события с точки зрения, например, так:

Filter out MSSQLSERVER events

Но вкладка XML предоставляет то, что происходит под капотом, и это довольно некрасиво (как в крайне неэффективно):

Query that's being processed for such filter

Я хочу, чтобы лучше управлять данными этого события, и я уверен, что я не единственный.
Итак, если кто-нибудь из Microsoft читает это - обратите внимание!

+0

Я не думаю, что вы можете. Некоторые API позволяют записывать журналы, основанные исключительно на источнике, другие позволяют указать как источник событий, так и таргетинг журнала. Возможно, когда вы * включили источник MSSQLSERVER в альтернативный журнал, этот тип вызовов будет терпеть неудачу. Stick с фильтром журнала (или просмотра SQL-журналов через SSMS). –

+0

Выглядит так, к сожалению. Точка: SQL Server наводняет журнал приложений, и он становится лишним неуклюжим и медленным, чтобы найти другие события (это не события SQL, которые я после ..) – Astrogator

ответ

1
+0

Не совсем. Такая же информация записывается в «Журнал событий приложений Windows». Я бы предпочел обозначить явный пользовательский журнал событий Windows и позволить SQL сохранять там свои события, в противном случае он наводняет стандартный: 80..90% из них - это SQL-материал. Его можно отфильтровать, но, скорее всего, его нужно будет устанавливать каждый раз, когда открывается Event Viewer. – Astrogator

0

Если вы хотите создать фильтр просмотра событий, чтобы исключить конкретный источник, вот XML (подавление событий SQL Express из журнала «Приложение»).

<QueryList> 
    <Query Id="0" Path="Application"> 
    <Select Path="Application">* 
    </Select> 
    <Suppress Path="Application">*[System[Provider[@Name='MSSQL$SQLEXPRESS']]]</Suppress> 
    </Query> 
</QueryList> 

См Event Selection on MSDN

Смежные вопросы