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

前端之家收集整理的这篇文章主要介绍了sql-server – 如何在不知道目标路径或文件名的情况下恢复SQL Server数据库备份?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我需要以编程方式(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

猜你在找的MsSQL相关文章