2012-03-28 58 views
0

不得不通过负载信息试图恢复导致昨天崩溃的事件序列,并且非常有兴趣找到解决方案以从SQL Server中卸载事件自定义事件日志。谷歌只产生一个single promising result,与链接到a guide on creating custom event logs ..将std应用程序日志中的SQL Server事件重定向到一个自定义日志中

虽然我不会走那么远,调用SQL事件pointless(虽然同意了,17101和17103拼写出“(C)20 ??微软公司“”和“”保留所有权利。“在每次重新启动时都是一定的浪费!),
恕我直言,将SQL事件重新路由到自己的日志当然是有用和有益的!
地狱,即使IE有一个,内置! 为什么SQL Server不能将此作为更好的实践来实现?特别是在Vista/Win7上,它提供了大量的其他应用程序的负载个人日志 - 相当无用恕我直言(从来没有任何需要挖掘那里),但迫使用户界面缓慢抓取每次打开它:

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的事件,DESC =“新条目”被添加到自定义事件登录!   但是,在此配置中,真正的MSSQLSERVER服务不会将事件写入此新日志或标准“应用程序”日志:(。功能在恢复注册表中的日志定义时恢复(无需重新启动!),因此它是可逆的场景。

而且,从上面看起来任何来源只能与一个日志有关..逻辑足够了。但是,什么定义这些内置来源然后,如果我删除显式注册表项?也许我应该在做出这些更改后重新启动机器(虽然这不是必须恢复)?

有没有人进一步探索这个,也许有任何成功?

编辑:到目前为止,就像我说的,似乎是解决这个问题的唯一办法由视图过滤掉MSSQLSERVER(或其它SQL服务名称)的事件,就像这样:

Filter out MSSQLSERVER events

但XML标签暴露了幕后发生的事,这是相当丑陋(如极其低效):

Query that's being processed for such filter

我想要一个更好的方式来管理这个事件数据,并且我确定我不是唯一的。
因此,如果微软的任何人都在阅读本文 - 请注意!

+0

我不认为你可以。有些API允许您完全基于源代码编写日志,其他API则允许您指定事件源和目标日志。很可能,当* *将MSSQLSERVER源切换到备用日志时,这些类型的调用将失败。坚持过滤日志(或通过SSMS查看SQL日志)。 – 2012-04-09 15:32:52

+0

不幸的是,这种方式。要点是:SQL Server淹没应用程序日志,并且它变得特别笨拙,并且发现其他事件的速度很慢(它不是SQL后的事件)。 – Astrogator 2012-04-09 19:47:34

回答

1
+0

不完全。相同的信息被写入'Windows应用程序事件日志“。我宁愿指定一个明确的自定义'Windows'事件日志,让SQL在那里保存它的事件,否则它将泛洪到标准的事件:80..90%是SQL的东西。它可能会被过滤掉,但每次打开事件查看器时都可能需要设置它。 – Astrogator 2012-03-28 18:22:21

0

如果您希望创建一个事件查看器过滤器来排除特定的源,下面是XML(抑制'Application'日志中的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