我需要以编程方式(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数据库备份?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9388498/