【问题标题】:Where does the stored procedure Sys.xp_readerrorlog Read its contents from specifically?存储过程 Sys.xp_readerrorlog 具体从哪里读取其内容?
【发布时间】:2012-03-16 09:36:28
【问题描述】:

我已经使用这个存储过程 Sys.xp_readerrorlog 大约一周了,我了解到它接受 7 个参数来完全改进它应该如何显示其数据。很容易理解。

我现在有一个问题,这个存储过程究竟是从哪里获取数据的?我知道您还可以在 SSMS 对象浏览器中预览数据,在 SQL Server 日志文件夹中的 Managements 下,尽管我已经得出这样的理论,即您阅读日志时打开的对话框也使用此过程显示给用户一个网格。

我很困惑。我浏览了系统数据库,没有发现任何东西(没有表),它看起来与您从这个过程中获得的输出很相似

exec sys.xp_readerrorlog 1,0,'','',null,null,N'Desc';

任何专家可以告诉我实际日志数据存储在哪里,如果您有管理员权限,是否可以通过 select 语句查询?

【问题讨论】:

    标签: tsql stored-procedures sql-server-2008-r2 logging


    【解决方案1】:

    它从SQL Server error log file 读取,这是一个纯文本文件。没有从 TSQL 到文件的内置接口; xp_readerrorlog 广为人知,但它也没有记录,因此依赖它是有风险的,当然如果您不介意这种风险,您可以use it

    使用 SMO,您可以找到文件 location,但没有用于读取它的特殊 API,因为它只是一个文本文件。

    【讨论】:

    • 没想到来​​了,还真以为是存储在内部数据库中的,但好奇心被勾起,觉得有必要问一下。我有代码将其提取到临时表中,使用内部参数和 PATINDEX() 方法对其进行操作,并将其批量复制到具有另一个列布局的另一个表中。
    • 我想这个想法是 SQL Server 需要一个“故障安全”位置来进行日志记录,例如如果在启动过程中出现致命错误,那么系统数据库甚至可能不在线且不可用。 (离开草坪。)
    猜你喜欢
    • 2014-12-19
    • 2021-12-11
    • 2011-11-26
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多