我需要以编程方式(T-sql)在sql Server 2008中还原数据库备份.此备份来自不同的服务器,原始数据库名称也可能不同. (实际上,我将数据库从一些服务器复制到另一个服务器上的新数据库.)
显然,我必须使用RESTORE DATABASE … WITH MOVE,它可以工作,但我需要知道文件应该在哪里恢复,以及如何命名.尽管搜索,我还没有找到什么似乎是最基本的任务:只需使用默认路径和文件名,即执行sql Server在发出CREATE DATABASE时执行的任何操作 – 您不必指定路径为了这个命令,为什么需要RESTORE?
我忽略了一些微不足道的解决方案,或者我真的必须列出文件,不知何故从sql Server配置中找到数据库目录,并使用该信息构建RESTORE命令?谢谢.
(与Postgresql相比,在使用pg_restore时,您指定了已创建的目标数据库;创建时,您有选择 – 非强制性)指定非默认表空间,但如果没有,则只是不在乎文件的物理存储位置.)
解决方法
CREATE DATABASE命令将使用默认路径创建数据库,因此您可以创建一个数据库,然后使用替换语法(sqlcmd模式)对其进行恢复:
:setvar DatabaseName MyDatabase declare @fileName varchar(255) set @fileName = 'c:\backup\mybackup.bak' if db_id('$(DatabaseName)') is null CREATE DATABASE [$(DatabaseName)] RESTORE DATABASE [$(DatabaseName)] FROM DISK = @fileName WITH REPLACE