tsql-查找数据库何时脱机

tsql-查找数据库何时脱机,sql,sql-server,sql-server-2005,tsql,Sql,Sql Server,Sql Server 2005,Tsql,我们有没有办法知道数据库何时离线? 平台:SQLServer2005TSQL中似乎没有实现这一点的方法。在sys.databases目录视图中,它不是作为属性捕获的,大多数其他可能性(如DBCC)都要求数据库联机才能工作 但是,在事件日志中会使用日期/时间戳捕获信息。因此,您将看到MSSQLSERVER中的一个事件,其描述如下:为数据库MyDatabase将数据库选项OFFLINE设置为ON。如果启用了默认跟踪,您可能会很幸运。尝试下面的代码,如果它工作,让我知道。请注意,此代码将显示对数据库进

我们有没有办法知道数据库何时离线?
平台:SQLServer2005

TSQL中似乎没有实现这一点的方法。在sys.databases目录视图中,它不是作为属性捕获的,大多数其他可能性(如DBCC)都要求数据库联机才能工作


但是,在事件日志中会使用日期/时间戳捕获信息。因此,您将看到MSSQLSERVER中的一个事件,其描述如下:为数据库MyDatabase将数据库选项OFFLINE设置为ON。

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


随机思维:文件日期/时间戳可能会随着数据库引擎脱机而改变

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

对不起,我无法验证这个想法

编辑:

在SQL Server 2000中,存在未记录的xp_getfiledetails


在过去,我将其用作DBA,以便非常清晰地读取文件时间戳。要避免使用DTS并在t-sql中保留尽可能多的数据…

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

文件系统日期/时间可能会更改,但似乎不会反映在SQL anywhere中。我猜你可以用这种方式来完成。我没有默认的跟踪运行。相关 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