可能重复:
How can I determine the last time any record changed in a specific Sql Server 2000 database?
我的雇主已经要求我将所有当前使用的数据库从一台服务器迁移到另一台服务器,然后“归档”所有不再使用的数据库。
我遇到的问题是,关于哪些应用程序正在使用服务器上的哪些数据库并且名称方案没有太多约定,几乎没有文档。不幸的是,我们在这里“支持”了很多第三方软件,至少可以说事情很混乱。
我想使用的方法是迁移任何在过去一个月内看到交易的数据库,然后只是离线并备份其他数据库。
我遇到的问题是我不确定如何检查给定数据库上的活动?有什么我可以用来告诉我是否有任何事情发生?
答案 0 :(得分:1)
检查当前活动SQL Server Profiler非常好。然而,除了可能已经进行的任何记录之外,我担心这是你所能做的一切。
但是我通常发现将可疑数据库设置为脱机通常会导致任何问题显示出来; - )
答案 1 :(得分:1)
在SQL Server 2000中,遗憾的是,您无法做到这一点。 SQL Server不会以便于您运行查询的方便方式跟踪它。您可以设置一天或一周的服务器端跟踪,然后通过database_id从跟踪和组中提取数据,以查看在该时间段内已触摸的数据库。
关闭访问并等待人们投诉是错误的方式恕我直言。首先,如果您拒绝访问关键数据库该怎么办?那个只在月底访问的数据库怎么样?如果使用该数据库的唯一人员在度假,该怎么办?如果您关闭访问权限并且可以相当快地将其重新打开,这可能没问题,但我会非常小心这种方法。
在SQL Server 2005及更高版本中,您可以查询每个数据库中的DMV,例如sys.dm_db_index_usage_stats,它会告诉您最后一次用户搜索/扫描/更新。您还可以设置简单的审核。 I blogged about this here(即使它现在可能对您没有帮助)。