tsql-查找数据库何时脱机

时间:2009-12-29 01:04:15

标签: sql sql-server sql-server-2005 tsql

我们有什么方法可以知道数据库何时脱机? 平台:SQL Server 2005

4 个答案:

答案 0 :(得分:1)

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

但是,会在事件日志中捕获信息(带有日期/时间戳)。因此,您将看到来自MSSQLSERVER的事件,其中包含“将数据库选项OFFLINE设置为ON以用于数据库MyDatabase”的描述。

答案 1 :(得分:0)

如果启用了默认跟踪,您可能会很幸运。如果有效,请尝试以下代码并告知我们。请注意,此代码将显示对数据库进行修改的所有记录,而不是将其脱机。

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

答案 2 :(得分:0)

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

来自ALTER DATABASE

  

数据库已关闭,干净地关闭,并标记为脱机。在脱机时无法修改数据库。

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

编辑:

在SQL Server 2000中,存在未记录的xp_getfiledetails is not in SQL Server 2005

在过去的日子里,我使用它作为DBA来非常干净地读取文件时间戳。有什么可以避免使用DTS并尽可能多地保留在t-sql ...

答案 3 :(得分:0)

检查数据库文件的上次修改数据/时间。如果文件未被任何其他工具使用,这可能会让您知道。