Перенаправить события SQL Server из журнала приложения std в пользовательский - PullRequest
0 голосов
/ 28 марта 2012

Пришлось просочиться в кучу информации, пытаясь восстановить последовательность событий, которая привела к вчерашнему сбою, и действительно заинтересовался поиском решения для выгрузки событий из SQL Server в пользовательский журнал событий.Google дает только единственный многообещающий результат со ссылкой на руководство по созданию пользовательских журналов событий ..

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

Snapshot of Event Log view in MMC on Win7

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

EventCreate / l "SQLServer" / t Информация / поэтому MSSQLSERVER / id 1 / d "Журнал создан"
ОШИБКА: параметр источника используется только для идентификации пользовательских приложений / сценариев (не встроенисточники).

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

EventCreate / l "SQLServer" / t Информация/ so MSSQLSERVER / id 2 / d "Новая запись"
SUCCESS: в журнале / источнике "MSSQLSERVER" создается событие типа "информация".

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

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

Кто-нибудь исследовал этодальше и, может быть, имели какой-либо успех?

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

Filter out MSSQLSERVER events

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

Query that's being processed for such filter

Мне нужен более удобный способ управления данными этого события, и я уверен, что я не единственный.
Так что если таковые имеютсялюди в Microsoft читают это - обратите внимание!

Ответы [ 2 ]

1 голос
/ 28 марта 2012
0 голосов
/ 13 октября 2012

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

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

См. Выбор события на MSDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...