适用范围:SQL Server
允许读取 SQL Server 的内容或SQL Server 代理错误日志文件并筛选关键字。
语法
sys.sp_readerrorlog
[ [ @p1 = ] p1 ]
[ , [ @p2 = ] p2 ]
[ , [ @p3 = ] N'p3' ]
[ , [ @p4 = ] N'p4' ]
[ ; ]
参数
[ @p1 = ] P1
要查看的日志的整数值。
@p1为 int,默认值为 0. 当前错误日志的值为 0. 上一个是 1 (ERRORLOG.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.2、 ERRORLOG.2 变为、变为 ERRORLOG.3等。
sp_readerrorlog 使你能够读取这些错误日志文件中的任何一个,只要文件存在。
权限
SQL Server 2019(15.x)及更早版本要求VIEW服务器状态权限。
SQL Server 2022(16.x)及更高版本要求VIEW服务器上的任何错误日志权限。
示例
以下示例对 SQL Server 错误日志进行循环。
A. 读取当前的 SQL Server 错误日志
EXECUTE sp_readerrorlog;
B. 显示上一SQL Server 代理错误日志
EXECUTE sp_readerrorlog 1, 2;
°C 查找指示数据库正在启动的日志消息
EXECUTE sp_readerrorlog 0, 1, 'database', 'start';