KAS*_*DBA 9 sql-server-2008 sql-server offline
我试图找到一种方法来弄清楚我的几个 sql 数据库何时脱机。
我检查了日志,但找不到任何此类信息,而且没有启用默认跟踪。
我只是有一个信息,之前有一位 DBA 将其离线,但没有电子邮件或书面通信等。
我们能找到这方面的信息吗?
请推荐,谢谢!
Aar*_*and 11
您可以使用以下命令发现当前事件日志周期中的所有这些事件sp_readerrorlog:
EXEC sys.sp_readerrorlog @p1 = 0, @p2 = 1, @p3 = N'OFFLINE';
Run Code Online (Sandbox Code Playgroud)
@p1如果在当前事件日志中找不到它,则可以循环浏览 的值。默认情况下,您应该能够读取当前和之前的 6 个错误日志文件,因此使用 0-6 作为参数尽可能返回(在我的系统上,我无法获取0/NULL聚合所有日志文件;YMMV )。
将返回如下内容:
LogDate ProcessInfo Text
------------- ----------- ---------------------------------------------------------
yyyy-mm-dd... spid72 Setting database option OFFLINE to ON for database 'foo'.
Run Code Online (Sandbox Code Playgroud)
当然,有可能错误日志被填充得足够多,以至于事件发生在当前错误日志集之前。在这种情况下,你就不走运了。为了将来保留更长的运行历史记录,您可以更改保留的错误日志的数量。在对象资源管理器中,展开管理,右键单击 SQL Server 日志,然后选择配置。在那里您可以更改错误日志文件回收设置,包括保留之前的 99 个文件。另请参阅此答案。
请注意,这sp_readerrorlog是未记录且不受支持的,尽管很多人都写过它。最后,错误日志文件只是纯文本文件,因此您可以编写自己的 PowerShell、CLR 等来解析文件并返回相同的信息。您可以使用以下方法确定此实例的错误日志文件的位置:
SELECT SERVERPROPERTY('ErrorLogFileName');
Run Code Online (Sandbox Code Playgroud)
这些文件将被命名为ERRORLOG、ERRORLOG.1、ERRORLOG.2等。您可以在基本文本编辑器中打开这些文件以查看其结构,但我会谨慎打开当前正在使用的文件 ( ERRORLOG)。
如果数据库设置为离线:
IE
alter database AdventureWorks2012
set offline;
go
Run Code Online (Sandbox Code Playgroud)
您确实会在 SQL Server 错误日志中看到一条记录的消息:
将数据库“AdventureWorks2012”的数据库选项 OFFLINE 设置为 ON。
select *
from sys.messages
where language_id = 1033
and text like '%setting database option%for database%';
Run Code Online (Sandbox Code Playgroud)
如果您正在监视数据库选项更改,则消息 ID 为 5084。
| 归档时间: |
|
| 查看次数: |
19775 次 |
| 最近记录: |