我们有什么方法可以知道数据库何时脱机? 平台:SQL Server 2005
答案 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)
随机思考:文件日期/时间戳可能会随着数据库引擎离线而改变。
数据库已关闭,干净地关闭,并标记为脱机。在脱机时无法修改数据库。
对不起,我无法测试这个想法。
编辑:
在SQL Server 2000中,存在未记录的xp_getfiledetails is not in SQL Server 2005。
在过去的日子里,我使用它作为DBA来非常干净地读取文件时间戳。有什么可以避免使用DTS并尽可能多地保留在t-sql ...
答案 3 :(得分:0)
检查数据库文件的上次修改数据/时间。如果文件未被任何其他工具使用,这可能会让您知道。