SQL Server使用xp_readerrorlog命令查看错误日志

 更新时间:2025年03月08日 15:14:43   作者:culuo4781  
本文探讨了SQL Server中查看日志的四种方法,重点介绍了xp_readerrorlog命令的使用方法,xp_readerrorlog命令用于T-SQL读取SQL Server错误日志,有助于对SQL Server中的问题进行故障排除,避免因特定情况而从GUI读取大型错误日志的麻烦

本文探讨了SQL Server中查看日志的四种方法,重点介绍了xp_readerrorlog命令的使用方法,xp_readerrorlog命令用于T-SQL读取SQL Server错误日志。

介绍

SQL Server错误日志对于解决数据库服务器的问题很有用。 它包含系统事件和用户定义的事件信息。 在以下情况下,我们可以使用错误日志查看:

有关SQL Server实例的信息

审核登录–成功或失败

数据库恢复状态

记录的错误消息

我们可以使用不同的方法读取错误日志,但是首先,我们应该知道错误日志的路径。

SSMS工具查看日志

连接到SSMS中SQL实例,然后导航到“管理”。 展开管理文件夹,然后展开SQL Server日志。 在SQL Server日志中,您可以看到不同的日志-当前日志和存档日志:

SQL Server error logs

双击所需的错误日志文件,它将在单独的窗口中打开错误日志:

View error log in SSMS

T-SQL方法查看日志

您可以使用SERVERPROPERTY()命令来了解当前的错误日志文件位置

SELECT SERVERPROPERTY('ErrorLogFileName') AS 'Error log file location';

Error log location

您可以浏览到目录,并显示可用的错误日志文件

View error log in the log folder

使用GUI访问错误日志

通常,DBA使用GUI方法读取错误日志,如上所示。 您可能会遇到尝试打开错误日志的问题,但是打开错误日志会花费很多时间。 此外,它给出了超时问题。 由于错误日志过多,可能会发生这种情况。

通常,我们部署一个SQL Agent作业来回收错误日志文件,以便它不会变得很大。 如果作业不可用或未运行,则可能会导致大量错误日志

如果我们为成功的登录启用了审核,则SQL Server会为每个成功的数据库连接记录一个条目。 在繁忙的OLTP系统中,您可能会获得许多成功的登录信息,这些登录信息会淹没错误日志

SQL Server日志备份。 假设您在SQL实例中有50个数据库。 您每10分钟配置一次事务日志备份。 因此,每隔10分钟,它将在错误日志中写入有关每个数据库的日志备份的信息。 我们可以禁止显示这些消息,但这不在本文讨论范围之内

如果我们要搜索多个错误日志,则使用GUI读取和过滤日志可能是一项令人沮丧且具有挑战性的任务。

查询以列出错误日志及其大小

您可以执行以下查询以列出可用的错误日志及其大小:

EXEC sys.sp_enumerrorlogs;

Query to list error log and their sizes

这里的日期列显示了特定文件中最后一个条目的时间戳。

使用xp_readerrorlog读取SQL Server日志文件

我们使用扩展存储过程xp_readerrorlog读取SQL Server错误日志文件。

xp_ReadErrorLog命令的语法

Exec xp_ReadErrorLog  <LogNumber>, <LogType>, <SearchItem1>, <StartDate>, <EndDate>, <SortOrder>

LogNumber-存档编号:错误日志的日志号。‌指定读取哪个日志。SQL Server最多有7个日志,编号从0到6,其中0表示当前日志‌

LogType-日志类型‌:指定日志的类型。1表示SQL Server日志,2表示SQL Agent日志‌

SearchItem1-查询包含的字符串‌:指定要在日志中搜索的字符串。这个参数可以重复,用于进一步精确结果集‌

StartDate-开始时间‌:指定读取日志的开始时间‌

EndDate-结束时间‌:指定读取日志的结束时间。需要注意的是,如果要指定时间参数,必须同时指定开始时间和结束时间‌

SortOrder-结果排序‌:指定结果集的排序方式,可以是按日期降序(Desc)或升序(Asc)‌

让我们使用以下示例了解命令xp_readerrorlog。

读取当前错误日志

我们可以在不指定任何参数的情况下读取当前SQL Server错误日志:

EXEC xp_ReadErrorLog

Read Current error log

读取SQL Server错误日志

在以下命令中,我们使用以下参数:

EXEC xp_ReadErrorLog 0,1

Read SQL Server error log

读取SQL Server代理日志

在此命令中,我们为LogType参数2指定一个值,该值引用SQL Server代理日志:

EXEC xp_ReadErrorLog 0,2

Read SQL Server agent log

读取当前SQL Server错误日志并搜索文本“警告”

此命令在当前SQL Server错误日志文件中搜索文本警告:

EXEC xp_ReadErrorLog 0, 1, N'Warning'

Reads current SQL Server error log and search for text 'Warning'

我们需要使用N将文本放在单引号中。我们可能会收到带有N的以下错误消息。它将字符串声明为Nvarchar数据类型,而不是Varchar:

消息22004,级别12,状态1,第0行
执行扩展存储过程时出错:无效的参数类型

Error message

读取当前SQL Server错误日志并搜索多个条件

此查询在当前SQL Server错误日志中搜索文本数据库和初始化。 这两个条件都应满足以返回结果:

EXEC xp_ReadErrorLog 0, 1, N'Database',N'Initialization'

search for multiple conditions

在特定持续时间内读取当前SQL Server错误日志

假设我们要搜索SQL Server错误日志特定的持续时间。 假设我们要搜索2019年11月7日午夜至9 AM之间的关键字恢复。 我们可以采用以下格式指定开始日期和结束日期参数:

EXEC xp_readerrorlog 
    0, 
    1, 
    N'Recovery', 
    N'', 
    N'2019-11-07 00:00:01.000', 
    N'2019-11-07 09:00:01.000'

Server error log for a specific duration

在输出中,您可以看到结果从开始日期到结束日期按升序排序。 我们可以指定参数desc,以便将结果从结束日期到开始日期按降序排序:

EXEC xp_readerrorlog 
    0, 
    1, 
    N'Recovery', 
    N'', 
    N'2019-11-07 00:00:01.000', 
    N'2019-11-07 09:00:01.000',
    N'desc'

Server error log for a specific duration in desending order

使用变量读取特定时间段内的多个条件的当前SQL Server错误日志

我们可以使用以下查询在变量中指定所需的参数,并在命令xp_readerrorlog中使用这些变量。

它使用以下条件:

搜索关键字Recovery和指定开始和结束日期

DECLARE @logFileType SMALLINT= 1;
DECLARE @start DATETIME;
DECLARE @end DATETIME;
DECLARE @logno INT= 0;
SET @start = '2019-11-07 00:00:01.000';
SET @end = '2019-11-07 09:00:00.000';
DECLARE @searchString1 NVARCHAR(256)= 'Recovery';
DECLARE @searchString2 NVARCHAR(256)= 'MSDB';
EXEC master.dbo.xp_readerrorlog 
     @logno, 
     @logFileType, 
     @searchString1, 
     @searchString2, 
     @start, 
     @end;

Read current SQL Server error log using variables with xp_readerrorlog command

结论

本文探讨了SQL Server中查看日志的四种方法,重点介绍了xp_readerrorlog命令的使用方法。 它有助于对SQL Server中的问题进行故障排除,避免因特定情况而从GUI读取大型错误日志的麻烦。

到此这篇关于SQL Server使用xp_readerrorlog命令查看错误日志的文章就介绍到这了,更多相关xp_readerrorlog读取mssql错误日志内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文搞懂SQL注入攻击

    一文搞懂SQL注入攻击

    SQL注入(SQL Injection)攻击是其中最普遍的安全隐患之一,因此,如何防范SQL注入攻击成为了网络安全领域的一个重要议题。本文通过代码示例详细介绍了SQL注入攻击,需要的朋友可以参考一下
    2023-04-04
  • sql函数 REGEXP_REPLACE的使用方法小结

    sql函数 REGEXP_REPLACE的使用方法小结

    假设您的数据在正文中有不必要的空格,您希望用单个空格来替换它们,利用REPLACE函数 ,这篇文章给大家介绍sql函数 REGEXP_REPLACE的使用方法小结,感兴趣的朋友一起看看吧
    2023-11-11
  • SQL Server 在分页获取数据的同时获取到总记录数

    SQL Server 在分页获取数据的同时获取到总记录数

    本文通过两种方法给大家介绍SQL Server 在分页获取数据的同时获取到总记录数,感兴趣的朋友跟随脚本之家小编一起学习吧
    2018-05-05
  • 更改SQL Server更改当前数据库的所有者:sp_changedbowner

    更改SQL Server更改当前数据库的所有者:sp_changedbowner

    更改SQL Server更改当前数据库的所有者:sp_changedbowner...
    2007-02-02
  • SQL Server数据库开发的二十一条法则

    SQL Server数据库开发的二十一条法则

    如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS)。
    2010-06-06
  • SQL Substring提取部分字符串

    SQL Substring提取部分字符串

    SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样
    2009-11-11
  • SQLSERVER查看数据库日志方法与语句示例代码(已亲测)

    SQLSERVER查看数据库日志方法与语句示例代码(已亲测)

    在数据库使用很久后日志文件会累计的越来越大,如果硬盘空间不足可能会导致宕机,下面这篇文章主要给大家介绍了关于SQLSERVER查看数据库日志方法与语句的相关资料,需要的朋友可以参考下
    2023-03-03
  • 什么是数据库 SQL Execution Plan(简单介绍)

    什么是数据库 SQL Execution Plan(简单介绍)

    SQL Execution PlanSQL 执行计划是数据库管理系统在执行SQL语句时,对如何高效检索数据进行的一系列优化步骤的描述,这篇文章主要介绍了什么是数据库 SQL Execution Plan,需要的朋友可以参考下
    2024-03-03
  • SQL Server数据库按百分比查询出表中的记录数

    SQL Server数据库按百分比查询出表中的记录数

    这篇文章主要介绍了SQL Server数据库在一个表中按百分比查询出记录条数的方法及代码示例,需要的朋友可以参考下
    2015-08-08
  • SQL Server中查询最近一条记录的三种方法

    SQL Server中查询最近一条记录的三种方法

    在使用SQL Server数据库时,有时我们需要查询表中的最近一条记录,这可能涉及到查找表中的最新数据、最新订单、或者按时间戳获取最近的更新等情况,本文将介绍几种常用的查询方法来实现这个目标,需要的朋友可以参考下
    2024-09-09

最新评论