我需要以编程方式(T-SQL)在SQL Server 2008中还原数据库备份。此备份来自其他服务器,并且原始数据库名称也可能有所不同。 (实际上,我正在将数据库从某台服务器复制到另一台服务器上的新数据库。)

显然,我必须使用有效的RESTORE DATABASE ... WITH MOVE,但我需要知道文件应还原到的位置以及如何命名。尽管进行了搜索,但我还没有发现什么似乎是最基本的任务:仅使用默认路径和文件名,即在发出CREATE DATABASE时执行SQL Server的任何操作-无需指定该命令的路径,为什么RESTORE需要它?

我是否忽略了一些简单的解决方案,还是真的必须列出文件,以某种方式从SQL Server配置中找到数据库目录,并使用该信息来构造RESTORE命令?谢谢。

(与PostgreSQL相比,在使用pg_restore时,您指定了已创建的目标数据库;在创建数据库时,可以选择指定非默认表空间(不是强制性的),但如果不是,则可以选择只是不在乎文件的物理存储位置。)

最佳答案

对于未来的Google员工;从SQL Server 2012起,您可以使用:

SELECT ServerProperty(N'InstanceDefaultDataPath') AS default_file
     , ServerProperty(N'InstanceDefaultLogPath') AS default_log
;


这将读取出现在“服务器属性”>“数据库设置”>“数据库默认位置”下的文件夹路径

sql-server - 如何在不知道目标路径或文件名的情况下还原SQL Server数据库备份?-LMLPHP

关于sql-server - 如何在不知道目标路径或文件名的情况下还原SQL Server数据库备份?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9388498/

10-14 15:12
查看更多