sp_readerrorlog (Transact-SQL)

适用范围:SQL Server

允许读取 SQL Server 的内容或SQL Server 代理错误日志文件并筛选关键字。

Transact-SQL 语法约定

语法

sp_readerrorlog
    [ [ @p1 = ] p1 ]
    [ , [ @p2 = ] p2 ]
    [ , [ @p3 = ] N'p3' ]
    [ , [ @p4 = ] N'p4' ]
[ ; ]

参数

[ @p1 = ] p1

要查看的日志的整数值。 @p1为 int,默认值为 0. 当前错误日志的值为 0. 上一个是 1ERRORLOG.1),前一个是 2 (ERRORLOG.2),依依如此。

[ @p2 = ] p2

要查看其日志的产品的整数值。 @p2为 int,默认值为 NULL. 用于 1 SQL Server 或2SQL Server 代理。 如果未指定值,则使用 SQL Server 产品。

[ @p3 = ] N'p3'

查看错误日志时要筛选的字符串的字符串值。 @p3为 nvarchar(4000),默认值为 NULL.

[ @p4 = ] N'p4'

要筛选的额外字符串的字符串值,以便在查看错误日志时进一步优化搜索。 @p4为 nvarchar(4000),默认值为 NULL. 此参数为第一个字符串搜索 @p3提供额外的筛选器。

返回代码值

无。

结果集

显示请求的错误日志的内容。 如果使用筛选器字符串,则仅显示与这些字符串匹配的行。

注解

每次启动 SQL Server 时,当前错误日志都会重命名为 ERRORLOG.1; ERRORLOG.1 变为 ERRORLOG.2ERRORLOG.2 变为、变为 ERRORLOG.3等。 sp_readerrorlog 使你能够读取这些错误日志文件中的任何一个,只要文件存在。

权限

SQL Server 2019 (15.x) 和早期版本需要对服务器具有 VIEW SERVER STATE 权限。

SQL Server 2022 (16.x) 及更高版本需要对服务器具有 VIEW ANY ERROR LOG 权限。

示例

以下示例对 SQL Server 错误日志进行循环。

A. 读取当前的 SQL Server 错误日志

EXECUTE sp_readerrorlog;

B. 显示上一SQL Server 代理错误日志

EXECUTE sp_readerrorlog 1, 2;

°C 查找指示数据库正在启动的日志消息

EXECUTE sp_readerrorlog 0, 1, 'database', 'start';