如何使用TSQL语法将.bak恢复到新的db?

时间:2013-09-28 18:57:22

标签: c# sql sql-server restore

我知道stackoverflow中有很多类似的问题,但是没有一个完全满足我的要求吗?

  

1 - 我不想附加包含2个.mdf .ldf文件的数据库
  2 - 该文件只是一个.bak文件
  3 - 我不想使用Microsoft SQL Management   4 - 我需要以编程方式完成吗?(在我的情况下是c#)

2 个答案:

答案 0 :(得分:17)

您可以通过发送T-SQL命令(与发送select查询相同的命令)来恢复数据库。例如:

restore database NameOfYourDb
from    disk = 'c:\backups\NameOfYourDb.bak'
with    recovery,
        move 'NameOfYourDb_Data' to 'c:\data\NameOfYourDb.mdf',
        move 'NameOfYourDb_Log' to 'c:\data\NameOfYourDb.log'

两个是可以存储在.bak文件中的最小文件数。每个数据库至少有一个数据和一个日志文件(扩展名分别为.mdf和.log。)

请注意,还原由SQL Server服务完成。您必须从该服务的角度提供路径。帐户SQL Server正在运行,需要对.bak文件的读访问权以及对.mdf和.log文件的写访问权。

答案 1 :(得分:1)

查看.NET库中的SMO对象。您可以使用还原对象here来还原数据库。 SQL Server Management Studio是使用此SMO对象构建的,因此您可以使用SS#执行任何操作。