Sql server 从SQL Server 2008 MDF文件恢复记录的最快方法

Sql server 从SQL Server 2008 MDF文件恢复记录的最快方法,sql-server,database,sql-server-2008,backup,mdf,Sql Server,Database,Sql Server 2008,Backup,Mdf,我想知道将MDF文件(作为实时实例上的备份生成)中的单个记录恢复到实时SQL Server数据库中的最佳方法是什么 我知道将文件附加到数据库的过程,也读过很多关于完全恢复的内容,但是从一个表中选择一条记录并将其插入到活动实例的同一个表中如何 我总是可以根据select语句的结果行,自己从头开始创建新记录,但我确信,对于这样一个简单的任务,必须有一种更聪明、更干净的方法 提前感谢大家,期待您的回答 干杯。您不能简单地从MDF文件中读取记录,您需要将其附加或还原到数据库。从本机上看,您不能。不过,R

我想知道将MDF文件(作为实时实例上的备份生成)中的单个记录恢复到实时SQL Server数据库中的最佳方法是什么

我知道将文件附加到数据库的过程,也读过很多关于完全恢复的内容,但是从一个表中选择一条记录并将其插入到活动实例的同一个表中如何

我总是可以根据select语句的结果行,自己从头开始创建新记录,但我确信,对于这样一个简单的任务,必须有一种更聪明、更干净的方法

提前感谢大家,期待您的回答


干杯。

您不能简单地从MDF文件中读取记录,您需要将其附加或还原到数据库。

从本机上看,您不能。不过,Red Gate有一款名为Virtual Restore的产品,允许您从备份装载数据库。

这是用于现在还是用于将来的规划?如果是后者,则可以利用数据库快照。

根据实时服务器的灵活性,您可以始终在实时服务器或其他链接服务器上以不同的名称附加备份数据库,然后只需选择要直接进入实时数据库中等效表的记录

这是否可行完全取决于主键。如果它是一个自动生成的标识列,在中选择它将给出一个不同的主键,该主键可能会在您可能还希望添加的任何链接记录上产生不希望的结果,则必须考虑新的主键

查询示例

insert into originaldb.dbo.Persons 
select * from backupdb.dbo.Persons where PersonId = '654G'
originaldb.dbo.Persons是要选择到的原始表

backupdb.dbo.Persons是您还原的备份表


如果没有选择整行,则需要稍微修改此查询,但这是查询的要点。

谢谢,这正是我想知道的。幸运的是,它是一个非常简单的表结构,因此这个特定记录的ID在插入时自动生成,而不被任何其他记录引用。这样的声明会是什么样子?如果不选择旧ID,只让SQL Server生成一个新ID,然后插入备份表中的其他列,这将是理想的选择。提前谢谢@mikelc-修改了我原来的答案,加入了一个简单的例子。