合 使用sp_readerrorlog读取SQL Server错误日志或代理错误日志
Tags: MSSQLSQL Server错误日志sp_readerrorlog
错误日志简介
查看 SQL Server 错误日志可以确保进程(如备份和还原操作、批处理命令或其他脚本和进程)成功完成。 此功能可用于帮助检测任何当前或潜在的问题领域,包括自动恢复消息(尤其是在 SQL Server 实例已停止并重启时)、内核消息或其他服务器级错误消息。
使用 SQL Server Management Studio 或任何文本编辑器查看 SQL Server 错误日志。 有关如何查看错误日志的详细信息,请参阅 Open Log File Viewer。 默认情况下,错误日志位于 Program Files\Microsoft SQL Server\MSSQL.
n\MSSQL\LOG\ERRORLOG
和 ERRORLOG.
n 文件中。
每当启动 SQL Server 实例时,将创建新的错误日志,虽然 sp_cycle_errorlog 系统存储过程可用于循环使用错误日志文件,而不必重启 SQL Server 实例。 通常,SQL Server 保留前六个日志的备份,并指定最近日志备份的扩展名为 .1、下一个最近日志备份的扩展名为 .2,依次类推。 当前的错误日志没有扩展名。
请注意,还可以查看脱机或无法启动的 SQL Server 实例上的 SQL Server 错误日志。 有关详细信息,请参阅 查看脱机日志文件。
sp_readerrorlog简介
sp_readerrorlog 允许读取 SQL Server 的内容或SQL Server 代理错误日志文件,并筛选关键字 (keyword)。
语法
1 2 3 4 5 | sp_readerrorlog @p1 int = 0, @p2 int = NULL, @p3 nvarchar(4000) = NULL, @p4 nvarchar(4000) = NULL |
参数
[@p1 = ]“log_number”
要查看的日志的整数 (int) 值。 当前错误日志的值为 0,上一个值为 1(Errorlog.1),前一个为 2(Errorlog.2),依此等。
[@p2 = ]“product ID”
要查看其日志的产品的整数 (int) 值。 将 1 用于 SQL Server 或 2 SQL Server 代理。 如果未指定值,则使用 SQL Server 产品
[@p3 = ]“string_to_search”
查看错误日志时要筛选的字符串值的字符串值。 此值为 nvarchar(4000), 默认值为 NULL。
[@p4 = ]“string_to_search”
要筛选的其他字符串的字符串值,以便在查看错误日志时进一步优化搜索。 此值为 nvarchar(4000), 默认值为 NULL。 这为第一个字符串搜索 @p3提供了额外的筛选器。
返回代码值
无返回代码
结果集
显示请求的错误日志的内容。 如果仅使用筛选器字符串,则显示与这些字符串匹配的行。
注解
每次启动 SQL Server 时,当前错误日志都会重命名为 errorlog.1; errorlog.1 变为 errorlog.2、errorlog.2 变为 errorlog.3 等。 sp_readerrorlog使你能够读取这些错误日志文件中的任何一个,只要文件存在。
权限
sp_readerrorlog的执行权限仅限于 sysadmin 固定服务器角色的成员。
示例
以下示例对 SQL Server 错误日志进行循环。
A. 读取当前的 SQL Server 错误日志
1 | EXEC sp_readerrorlog; |
B. 显示上一SQL Server 代理错误日志
1 | exec sp_readerrorlog 1, 2; |
C 查找指示数据库正在启动的日志消息
1 | exec sp_readerrorlog 0, 1, 'database', 'start' |
在 SQL Server Management Studio (SSMS) 中查看 SQL Server 错误日志
在 SQL Server Management Studio 中选择“对象资源管理器” 。 按 F8 打开“对象资源管理器” 。 或者,在顶部菜单上选择“视图”,然后选择“对象资源管理器” :
在“对象资源管理器” 中,连接到某个 SQL Server 实例,然后展开该实例。
找到并展开“管理” 部分(假设你有权查看它)。
右键单击“SQL Server 日志”,选择“查看”,然后选择“SQL Server 日志” 。
将显示“日志文件查看器” (可能需要等一段时间),其中包含可供查看的一个日志列表。
本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!