加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 如何在不知道目标路径或文件名的情况下恢复SQL Se

发布时间:2020-12-12 08:47:14 所属栏目:MsSql教程 来源:网络整理
导读:我需要以编程方式(T-SQL)在SQL Server 2008中还原数据库备份.此备份来自不同的服务器,原始数据库名称也可能不同. (实际上,我将数据库从一些服务器复制到另一个服务器上的新数据库.) 显然,我必须使用RESTORE DATABASE … WITH MOVE,它可以工作,但我需要知道文
我需要以编程方式(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:backupmybackup.bak'

if db_id('$(DatabaseName)') is null
            CREATE DATABASE [$(DatabaseName)]

RESTORE DATABASE [$(DatabaseName)]
FROM DISK = @fileName
WITH REPLACE

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读