AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 48405
Accepted
tombom
tombom
Asked: 2013-08-21 07:00:58 +0800 CST2013-08-21 07:00:58 +0800 CST 2013-08-21 07:00:58 +0800 CST

恢复无法启动数据库

  • 772

服务器“servername”的还原失败。(Microsoft.SqlServer.SmoExtended)
System.Data.SqlClient.SqlError:RESTORE 无法启动数据库“ECP”。(Microsoft.SqlServer.Smo)

数据库已创建,但无法使用对象资源管理器访问:

无法访问数据库 ECP。(对象浏览器)

感谢您提供有关如何使数据库正常工作的任何建议。

编辑:这个查询

select state_desc from sys.databases where name = 'ECP';

返回RECOVERY_PENDING。

我再次删除了数据库并重新尝试了

restore verifyonly from disk = 'path\file';

这返回

尝试还原此备份可能会遇到存储空间问题。后续消息将提供详细信息。
“F:\ECPDATA1\ECPDATA1.mdf”指定的路径不在有效目录中。
文件“F:\ECPDATA2\ECPDATA2.ndf”的目录查找失败,出现操作系统错误 3(无法检索此错误的文本。原因:15100)。
文件“F:\ECPDATA3\ECPDATA3.ndf”的目录查找失败,出现操作系统错误 3(无法检索此错误的文本。原因:15105)。
文件“F:\ECPDATA4\ECPDATA4.ndf”的目录查找失败,出现操作系统错误 3(无法检索此错误的文本。原因:15105)。
文件“E:\ECPLOG1\ECPLOG1.ldf”的目录查找失败,出现操作系统错误 21(无法检索此错误的文本。原因:15105)。
文件 1 上的备份集有效。

既然它说备份集是有效的,我只需要指定文件,让它工作,对吧?但是在这台服务器上我没有驱动器E:或F:. 如何在备份文件中进行调整?还是有可能(我对 windows-server-2008-r2 不太熟悉)在 linux 上拥有某种符号链接?

sql-server sql-server-2008-r2
  • 4 4 个回答
  • 5597 Views

4 个回答

  • Voted
  1. Best Answer
    Aaron Bertrand
    2013-08-21T07:42:37+08:002013-08-21T07:42:37+08:00

    您的还原失败,因为您的计算机上没有 E:\ 或 F:\。

    1. 执行RESTORE FILELISTONLY FROM DISK = 'path\file';- 这将告诉您数据和日志文件的逻辑名称。
    2. RESTORE DATABASE基于此构造一个命令。例如(假设数据文件名为ECP_Data,ECP_Data_2等):

      RESTORE DATABASE ECO FROM DISK = 'path\file'
        WITH REPLACE, RECOVERY,
        MOVE 'ECP_Data'   TO 'C:\...path to MSSQL\Data\ECP_Data.mdf',
        MOVE 'ECP_Data_2' TO 'C:\...path to MSSQL\Data\ECP_Data2.ndf',
        MOVE 'ECP_Data_3' TO 'C:\...path to MSSQL\Data\ECP_Data3.ndf',
        MOVE 'ECP_Data_4' TO 'C:\...path to MSSQL\Data\ECP_Data4.ndf',
        MOVE 'ECP_Log'    TO 'C:\...path to MSSQL\Data\ECP_Log.ldf';
      

      除了更正逻辑文件名之外,请替换为您想要用于存储数据/日志文件的C:\...path to MSSQL\Data\任何路径。您不需要每个文件都有一个单独的文件夹,但您可能仍希望将数据和日志文件分开到不同的磁盘上。请注意,如果您选择的任何驱动器都没有足够的空间来执行还原,它仍然可能会失败。

    • 7
  2. RLF
    2013-08-21T07:43:59+08:002013-08-21T07:43:59+08:00

    您似乎正在从具有 E: 和 F: 驱动器的服务器恢复数据库。您需要将文件移动到在 RESTORE 期间实际存在的位置。这将给出一个如下所示的恢复命令(从 SQL Server BOL 中清除):

    RESTORE DATABASE MyAdvWorks
      FROM AdventureWorks2008R2_Backup
      WITH RECOVERY,
      MOVE 'AdventureWorks2008R2_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf', 
      MOVE 'AdventureWorks2008R2_Log' TO 'D:\MyLog\MyAdvWorks_Log.ldf'
    

    您也可以从 UI 执行此操作,方法是转到还原对话框的选项选项卡并在“还原为”列中键入新路径。

    • 5
  3. Emrah Saglam
    2014-11-12T07:18:56+08:002014-11-12T07:18:56+08:00

    如果您尝试将 db 从服务器还原到另一台服务器,并且还原服务器上不存在 db,您可以尝试以下方法。

    可能出现的问题取决于这个原因;DB 文件可能位于还原服务器上不存在的不同磁盘名称上。

    解决恢复服务器的问题; 创建一个 db 和 db 附加的 db 文件。数据库和文件名必须与备份服务器上的 db 相同(以替换 db)。然后您可以尝试在replace mode为true的情况下再次开始恢复。

    • 0
  4. Mariusz Pawelski
    2015-04-03T06:40:10+08:002015-04-03T06:40:10+08:00

    如果有人在寻找尝试将 SQL Server 数据库恢复到 localdb 失败的答案时遇到这个问题(就像我所做的那样),那么它可能是localdb 限制。

    我使用了 SQL Server Express 并且能够进行还原。

    • -1

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    授予用户对所有表的访问权限

    • 5 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve