为什么在服务器上查看日志需要这么长时间?

Mat*_*att 8 sql-server maintenance sql-server-2008-r2 maintenance-plans

我只是想为失败的维护计划任务查找更详细的信息。我打开日志文件查看器并选中该框以查看我的维护计划的日志。除了这个例子中没有有源过滤器。然后我玩等待游戏......

我花了将近 20 分钟才能显示日志。所以我认为它可能只是花时间从这个服务器时间开始加载所有日志。我将过滤器减少到大约 3 天,因为这就是我所需要的。这出现得更快,但仍然需要 4 分钟才能显示出来。请注意,这是我第一次在我的计算机上尝试查看这些日志,因此这也可能是一个因素。我还尝试直接在服务器上查看日志,但得到了相似的时间结果。

这是课程的标准吗?我应该期望查看日志是这样的体验吗?有什么我应该做或检查的吗?我确实计划检查日志年龄并查看它是否可以被清除,但这是否仍然会影响仅在很短的 X 天内查看日志?

Bre*_*zar 9

是的,在日志文件查看器中读取日志需要很长时间。一些事情来解决它:

尝试使用带有过滤参数的xp_readerrorlog来获取您想要的数据:

  • @p1 是您要查看的日志文件(0 是当前的,1 是第一个存档,2 是第二个,等等)
  • @p2 为错误日志为空,2 为代理
  • @p3 和 @p4 是要在输出中搜索的字符串

这样你就可以得到你想要的行。

如果你发现自己经常做这种事情,运行一个工作来定期循环错误日志(我喜欢每周一次),这样你就不必筛选这么多东西。另外,请确保您没有将成功的备份或成功登录记录到错误日志中。


AMt*_*two 6

默认情况下,SQL Server 只会在实例重新启动时滚动错误日志。如果您有出色的服务器正常运行时间(也许您每年只打补丁和重启几次),错误日志可能会变得非常大(我已经看到它在某些情况下达到了很多 GB)。

错误日志存储为文本文件,因此在日志查看器中打开它本质上需要 SQL Server 打开并解析整个文本文件——如果您曾经打开过 10GB 的文本文件,您知道这可能会很慢。

我通常有一项工作,每周一次滚动 SQL Server 错误日志,以便日志保持足够小,以便可以快速打开 - 并且回溯足够远,单个文件包含我需要的内容。

要滚动您的日志,只需运行此存储过程(并安排一个代理作业每周运行一次:

EXEC sp_cycle_errorlog;
Run Code Online (Sandbox Code Playgroud)

您仍将在对象资源管理器中看到旧的存档日志: 对象浏览器日志

您可以在日志查看器中查看多个日志: 日志查看器

您可能还希望限制保存在服务器上的存档日志文件的数量。为此,请右键单击对象资源管理器中的“SQL Server 日志”文件夹并选择“配置”。然后标记复选框,并设置最大日志文件数。 日志保留

您通常应该错误地将其设置为高于您认为需要的值。如果您遇到服务器突然多次重新启动或 SQL Server 服务重复回收的问题,错误日志将在每次重新启动时翻转,并且您的日志不会像您希望的那样返回多个星期。

您还可以通过 设置日志保留时间xp_instance_regwrite。在下面的示例中,它设置此值以保留 10 个错误日志:

USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', 
    N'Software\Microsoft\MSSQLServer\MSSQLServer', 
    N'NumErrorLogs', 
    REG_DWORD, 
    10
GO
Run Code Online (Sandbox Code Playgroud)