tsql-找到数据库何时脱机

问题描述:

有没有办法让我们知道数据库何时脱机? 平台:SQL服务器2005tsql-找到数据库何时脱机

+0

相关信息[数据库何时脱机](https://dba.stackexchange.com/questions/89815/when-was-a-database-taken-offline) – 2017-09-05 14:31:50

在TSQL似乎没有办法做到这一点。它不是作为sys.databases目录视图中的一个属性捕获的,并且大多数其他可能性(如DBCC)要求数据库在线才能工作。

但是,信息在事件日志中被捕获(带有日期/时间戳)。因此,您将看到MSSQLSERVER中的一个事件,其描述如“将数据库MyDatabase的数据库选项OFFLINE设置为ON”。

如果您启用了默认跟踪,您可能会很幸运。试试下面的代码,如果它工作并让我知道。请注意,此代码将显示修改数据库的所有记录,而不是使其脱机。

 
DECLARE @FileName VARCHAR(MAX)
SELECT @FileName = SUBSTRING(path, 0, LEN(path)-CHARINDEX('\', REVERSE(path))+1) + '\Log.trc'
FROM sys.traces
WHERE is_default = 1;
SELECT
gt.EventClass, e.name as EventName, gt.TextData, gt.ObjectID, gt.ObjectName, gt.DatabaseName, gt.SessionLoginName, gt.StartTime, gt.ApplicationName, gt.HostName, gt.NTUserName, gt.NTDomainName FROM sys.fn_trace_gettable(@FileName, DEFAULT) AS gt JOIN sys.trace_events e ON gt.EventClass = e.trace_event_id WHERE gt.EventClass = 164 -- Object Altered Event AND ObjectType = 16964 -- Database Object

+0

我没有运行默认跟踪。 – Manjot 2009-12-30 21:51:20

随想:作为数据库引擎脱机,文件日期/时间戳可能会改变。

ALTER DATABASE

数据库被关闭,完全关闭,并标记为脱机。数据库脱机时无法修改。

我无法测试这个想法,对不起。

编辑:

在SQL Server 2000中存在的无证xp_getfiledetails这is not in SQL Server 2005

在过去的日子里,我使用这个作为DBA非常干净地读取文件时间戳。任何要避免使用DTS并尽可能保持在t-sql中...

+0

文件系统日期/时间可能会更改,但似乎并未在任何地方反映到SQL中。猜猜你可以掏腰包,也许是这样。 – GalacticCowboy 2009-12-29 13:07:57

检查数据库文件的上次修改数据/时间。这可能会给你一个想法,如果这些文件没有被任何其他工具使用。