【问题标题】:Database restore is missing tables数据库还原缺少表
【发布时间】:2018-04-25 00:47:19
【问题描述】:

我正在使用 SSMS 2017 并尝试将 SQL Server 2016 备份 (.bak) 文件还原到新数据库(原始备份中的数据文件和日志文件名称与我要还原到的新数据库不同) ,例如,db1.bak 用于通过还原操作创建一个名为db2 的新数据库。

还原完成后,所有存储过程和视图都存在,但所有表都不存在。

这些是我在 SSMS 中执行恢复的步骤:

  1. 右键单击数据库文件夹
  2. 选择“恢复数据库”
  3. 在常规页面下:对于“源”,我选择设备并选择 db1.bak 文件,对于“目标”,我输入要从备份中创建的新数据库的名称 (db2)
  4. 在“文件”页面下,我选择将所有文件重新定位到文件夹(数据和日志文件夹路径都已预先填充了正确的名称),逻辑文件名和还原为路径也是如此。
  5. 在“选项”页面下,我要么不选择任何内容,要么选择覆盖现有数据库 (WITH REPLACE)。

一旦恢复“成功”完成,我展开新创建的 db2 并单击展开表并收到以下错误消息:

我做错了什么?

这是脚本:

USE [master]
RESTORE DATABASE [PdsClone] FROM  DISK = N'F:\SQLBackups\PDS_backup_2017_12_12_001015_0199267.bak' WITH  FILE = 1, MOVE N'PDS_Data' TO N'E:\Program Files\Microsoft SQL Server\MSSQL13.PDS\MSSQL\DATA\PdsClone.mdf',  MOVE N'PDS_Log' TO N'E:\Program Files\Microsoft SQL Server\MSSQL13.PDS\MSSQL\DATA\PdsClone_log.ldf',  NOUNLOAD,  REPLACE,  STATS = 5   GO

更新 我让服务器组向该服务器添加另一个磁盘并将 SQL 备份移到那里,今天早上我能够成功完成还原。我之前已经清除了大部分备份文件,但是否是空间问题导致表无法在还原中显示?每次尝试都表明成功,但没有表。他们现在在那里,我很感谢您的建议和帮助!

【问题讨论】:

  • 在“恢复数据库”对话框中,左上角有一个按钮,可让您编写恢复脚本(根据您选择的内容 - 它向您显示您的 GUI 选择的 T-SQL产生)。编写脚本并向我们展示该脚本。 GUI 的描述通常会遗漏关键信息。
  • 我从未见过 SQL Server 数据库恢复恢复 sp 和视图而不是表。 select * from sys.tables 返回什么?
  • 要明确一点:要跳过表或任何对象或任何数据进行恢复是不可能的,除非数据库的系统表以一种非常有创意的方式被破坏,并且以某种方式未被检测到.恢复不能只恢复一些表,或者只恢复一些视图;事实上,许多人希望这是可能的,但由于拥有一个事务一致的数据库,这是不可能的。您可以放心地忽略这种可能性,转而支持 Management Studio 中无法正确查询系统表或错误解释结果的错误。

标签: sql-server


【解决方案1】:

对于所发生的事情并没有真正的答案,但也许 SSMS 正在做一些像@JeroenMostert 建议的那样有问题的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2010-11-03
    • 1970-01-01
    • 2013-02-09
    相关资源
    最近更新 更多