我试图找到一种方法来确定我的几个 sql 数据库何时脱机。
我检查了日志,但找不到任何此类信息,而且没有启用默认跟踪。
我只是有一个信息,早些时候有一个 DBA 将其离线,但没有电子邮件或书面交流。
我们能找到这方面的信息吗?
请建议,谢谢!
我试图找到一种方法来确定我的几个 sql 数据库何时脱机。
我检查了日志,但找不到任何此类信息,而且没有启用默认跟踪。
我只是有一个信息,早些时候有一个 DBA 将其离线,但没有电子邮件或书面交流。
我们能找到这方面的信息吗?
请建议,谢谢!
您可以使用以下命令发现当前事件日志周期中的所有这些事件
sp_readerrorlog
:@p1
如果在当前事件日志中找不到它,您可以循环查看 的值。默认情况下,您应该能够读取当前和之前的 6 个错误日志文件,因此使用 0-6 作为参数以尽可能返回(在我的系统上,我无法获取0
/NULL
聚合所有日志文件;YMMV )。将返回如下内容:
当然,错误日志有可能被填充到足以使事件发生在当前一组错误日志之前。在这种情况下,你就不走运了。要在将来保留更长的运行历史记录,您可以更改保留的错误日志的数量。在对象资源管理器中,展开管理,右键单击 SQL Server 日志,然后选择配置。在那里您可以更改错误日志文件回收设置,包括保留之前的 99 个文件。另请参阅此答案。
请注意,这
sp_readerrorlog
是未记录且不受支持的,尽管很多人都写过它。最后,错误日志文件只是纯文本文件,因此您可以编写自己的 PowerShell、CLR 等来解析文件并返回相同的信息。您可以使用以下方法确定此实例的错误日志文件的位置:这些文件将被命名为
ERRORLOG
、ERRORLOG.1
、ERRORLOG.2
等。您可以在基本文本编辑器中打开文件以查看其结构,但我会谨慎打开当前正在使用的文件 (ERRORLOG
)。如果数据库设置为脱机:
IE
您确实会在 SQL Server 错误日志中看到一条记录的消息:
如果您正在监视数据库选项更改,则消息 ID 为 5084。
如果您在日志中没有找到任何内容(可能前一段时间已脱机),您可以随时检查数据库物理数据文件的修改日期,因为它在脱机后不会更改。