首先我们来看数据库帮助上面的sql语句:

BACKUP DATABASE Northwind  TO DISK = 'c:/Northwind.bak'
RESTORE FILELISTONLY  FROM DISK = 'c:/Northwind.bak'
RESTORE DATABASE TestDB  FROM DISK = 'c:/Northwind.bak'
   WITH MOVE 'Northwind ' TO 'c:/test/testdb.mdf',
   MOVE 'Northwind _log' TO 'c:/test/testdb.ldf'

上面第一条语句是将Northwind数据库备份到Northwind.bak,

第二条语句是将Northwind.bak中的*.mdf和*ldf以及其他信息显示出来。

第三条语句是将Northwind.bak中的*.mdf何*.ldf重新命名。

第三条语句是在当我出现这种情况,即若我保存的Northwind.bak文件还原的数据库为新的数据库名,SQL如下:

RESTORE DATABASE dd_DB FROM DISK = 'c:/Northwind.bak'

那么将会出现这样的问题:

服务器: 消息 1834,级别 16,状态 1,行 1
无法重写文件 'C:/Program Files/Microsoft SQL Server/MSSQL/data/Northwind.mdf'。数据库 'TestDB' 正在使用该文件。
服务器: 消息 3156,级别 16,状态 1,行 1
文件 Northwind 无法还原为 'C:/Program Files/Microsoft SQL Server/MSSQL/data/Northwind.mdf'。请使用 WITH MOVE 选项来标识该文件的有效位置。
服务器: 消息 1834,级别 16,状态 1,行 1
无法重写文件 'C:/Program Files/Microsoft SQL Server/MSSQL/data/Northwind_log.LDF'。数据库 'TestDB' 正在使用该文件。
服务器: 消息 3156,级别 16,状态 1,行 1
文件 Northwind_log 无法还原为 'C:/Program Files/Microsoft SQL Server/MSSQL/data/Northwind_log.LDF'。请使用 WITH MOVE 选项来标识该文件的有效位置。
服务器: 消息 3013,级别 16,状态 1,行 1
RESTORE DATABASE 操作异常终止。

原因是只要数据库Northwind存在,那么在还原成新数据库的时候,Northwind.bak里面的*.mdf和*.ldf就不能覆盖重写已经存在的Northwind和Northwind_log 文件,那么解决方法是就是前面提到的第三条语句:

RESTORE DATABASE dd_DB  FROM DISK = 'c:/Northwind.bak'
   WITH MOVE 'Northwind ' TO 'c:/test/dd_DB.mdf',
   MOVE 'Northwind _log' TO 'c:/test/dd_DB.ldf'

但有这种情况,当我无法根据*.bak文件找到所对应的*.mdf和*.ldf,即如果我改变了.bak的文件名,那么我如何得到.mdf和.ldf文件才能创建新的数据库呢?

解决方案如下:

create table #restoreFileList (LogicalName varchar(255), PhysicalName varchar(255),Type varchar(20), FileGroupName varchar(255), Size varchar(20), MaxSize varchar(20))
   declare @filename varchar(1000)
   select @filename = 'c:/Northwind.bak'
   insert into #restoreFileList execute('restore filelistonly from disk='''+@filename+'''')

即:创建临时表,将语句RESTORE FILELISTONLY  FROM DISK = 'c:/Northwind.bak',中得到的数据放到 #restoreFileList 中,然后就可以将*.mdf和*.ldf内容取到!接下来的操作,我不用说你也会了。

关于数据库备份的问题相关推荐

  1. SQL Server 数据库备份

    SQL Server 数据库备份 原文 http://www.cnblogs.com/ynbt/archive/2013/04/04/2999642.html 备份数据库是指对数据库或事务日志进行复制 ...

  2. Asp.net 不使用SQLDMO实现数据库备份和还原

    今天需要做一个历史数据库,备份还原的程序,就是在sql服务器兴建一个数据库的历史版本的复.手工操作很方便,但是程序来实现我还没做过.上网找资料发现都调用了 SQLDMO 的 SQL COM 来实现. ...

  3. mysql数据库备份方案_MySQL平台数据库备份方案详细说明

    在数据库表丢失或损坏的情况下,备份你的数据库是很重要的.如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态.有时,正是MySQL管理员造成破坏.管理员已经知道表已破坏,用 ...

  4. 咪咕盒子链接服务器失败_云服务器怎样备份数据库备份

    云服务器怎样备份数据库备份?云服务器数据库的备份很重要,而手动操作会比较麻烦.以西部数码云服务器为例,可以实现 Ms Sqlserver数据库定时自动备份,并存至指定存储空间. 打开链接 下载,下载后 ...

  5. javaweb实现mysql备份功能_java web 实现mysql 数据库备份、恢复

    如题,由于项目需要,研究并实现了java web的 mysql数据库的备份.下载.恢复功能,中间遇到一些问题,耗费了不少时间,下面让我一一道来: 背景介绍: window 7系统 mysql 5.7 ...

  6. HANA 数据库备份hang住的解决办法

    今天遇到 HANA 数据库备份hang住的情况.经过查 SAP NOTE 解决,记录一下过程.两个NOTE如下: 2452735 - HANA Backup failing with "[4 ...

  7. 数据库备份到文件服务器,数据库文件备份到云服务器上

    数据库文件备份到云服务器上 内容精选 换一换 目前数据库服务器备份Agent安装包需要提交工单进行获取.当前仅支持x86计算类型的服务器,暂不支持鲲鹏计算类型的服务器.用户需要启用数据库备份前,需先在 ...

  8. 数据库备份定期删除程序的开发。

    第一.最近客户的服务器数据库备份每天都在进行,随着数据量的不断的增加,备份也在不断的进行变大. 第二.于是一些问题就出现了客户的服务器的磁盘的空间有限,定期数据库备份文件太大而导致无法进行保存问题. ...

  9. Linux系统mongdb还原数据库,linux下mongodb数据库备份与还原

    MongoDb数据库备份还原 数据库迁移,可视化工具NoSQLBooster for MongoDB 付费版才具有数据导入功能.代价过高,索性采起命令行web 数据备份 备份命令mongodb mon ...

  10. mysql数据库备份总结_mysql中mysqlhotcopy备份数据库总结

    mysqlhotcopy是mysql数据库中一个备份工具,相对于mysqldump是一个快速文件意义上的COPY,mysqlhotcopy是一个数据库端的SQL语句集合. mysqlhotcopy用法 ...

最新文章

  1. 尝试引用已删除的函数_学Excel函数公式,你必须要掌握这些知识
  2. PCL中的OpenNI点云获取框架(OpenNI Grabber Framework in PCL)
  3. zoj 3812 状压dp
  4. vs unity shader插件_一些Shader资料
  5. 团队转会名单(22日改)
  6. linux sd卡 分区变大,Linux 动态调整分区大小
  7. matlab consumption,Lesage matlab 空间
  8. 图像处理控件ImageGear for .NET教程如何为应用程序 添加DICOM功能(2)
  9. linux DHCP多作用域
  10. SpringBoot学习---Web开发(静态资源处理,首页和图标)
  11. if or函数套用_5个IF函数操作,让你轻松掌握条件判断和嵌套运用
  12. 腾达和小云无线路由中继(WISP)解决
  13. android 各版本对应的API(sdk) Level以及中文名称
  14. 怎么提供电子邮件副本_停止提供您的电话号码和电子邮件
  15. Proof of Stake - 股权证明 系列1
  16. mysql转储导入错误_将MySQL转储应用于RDS时出现“无法解析表名”错误
  17. 【高精度】高精度除以高精度 C++题解
  18. 学计算机改变命运?有意思的考研调剂宣传
  19. 太空射击第13课: 爆炸效果
  20. 恭喜 李志强 成为 Layotto committer!

热门文章

  1. IDEA打开父类的接口方法快捷键
  2. 超出内容用省略号替代
  3. mac下配置eclipse的maven环境
  4. Ionic发布成android
  5. 使用indexOf()算出长字符串中包含多少个短字符串
  6. 跟我学Telerik公司的RadControls控件(四)
  7. 修改Netbeas的注释结构
  8. 手把手教你用java读写excel表格文件(POI,EasyExcel)
  9. linux的基础知识——模型结构和数据包的封装
  10. AdaBoost 算法 入门