伙计们,

假设你接到一个断开备用的SQL服务器数据库(2005年或2008年),并恢复到SQL服务器的实例。

有没有一种方法,是有一个系统目录,以找出当最后写操作发生在那个特定的数据库?我想要能够找出是什么日子,一个特定的数据库备份是从-不幸的是,那不是真正的记录的明确任何地方,检查所有数十名数据表最高的日期/时间标记不是真正的选项。

任何想法?肯定的-我可以看看日期/时间戳*.bak文件,但我可以找出更精确地从内SQL服务器(管理工作室)??

谢谢!Marc

有帮助吗?

解决方案

您可以尝试RESTORE HEADERONLY您的备份文件,如所描述的此处

这应该给你你正在寻找的信息。

其他提示

如果你访问到SQL服务器的实例备最初运行,应能够查询 msdb:

SELECT backup_set_id, backup_start_date, backup_finish_date
FROM  msdb.dbo.backupset  
WHERE database_name = 'MyDBname' AND type = 'D' 

有几个表有关的备份设置:

  • backupfile--包含一个行为每个数据文件或记录文件备份
  • backupmediafamily--包含一个行为每种媒体的家庭
  • backupmediaset--包含一个行为每个备份媒体集
  • 备份集--包含一个行为每个备份设置

通过查询这些表格可以确定当最后一个备份发生什么类型的备份发生的情况以及文件的编写。

有一个有点晚了,但应该是你想要的东西。

每个写入该数据库是在日志文件中的一个条目。其中有一个LSN。 这必须存储在备份日志至少恢复。

所以,如何匹配LSN为datetime?

SELECT TOP 5 [End Time] AS BringFirst, *
FROM ::fn_dblog (NULL, NULL)
WHERE [End Time] IS NOT NULL
ORDER BY BringFirst DESC

我以前从未使用过这个(只是有此答案一出戏)。一些写有备份本身的可能性很大一部分,但你应该能够给他们一点闲逛区别。

据我知道在主数据库中存在,其中每一个写存储有详细信息的日志表。但我不能确定是否需要启用日志机制 - 使默认是不记录,你必须启用它。 在Oracle例如它的方式围绕存在一个系统数据库表登录可以查询。

如果这是不是这样 - 你仍然可以自己写一个触发并应用所需要的每个表/列,并做了记录自己

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top