恢复无法启动数据库

tom*_*bom 2 sql-server backup sql-server-2008-r2 restore

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

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

数据库 ECP 不可访问。(对象浏览器)

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

编辑:此查询

select state_desc from sys.databases where name = 'ECP';
Run Code Online (Sandbox Code Playgroud)

返回RECOVERY_PENDING

我再次删除了数据库并进行了新的尝试

restore verifyonly from disk = 'path\file';
Run Code Online (Sandbox Code Playgroud)

这返回

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

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

Aar*_*and 7

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

  1. 执行 a RESTORE FILELISTONLY FROM DISK = 'path\file';- 这将告诉您数据和日志文件的逻辑名称。
  2. RESTORE DATABASE基于此构造命令。例如(假设文件被命名的数据ECP_DataECP_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';
    
    Run Code Online (Sandbox Code Playgroud)

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


RLF*_*RLF 5

您似乎正在从具有 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'
Run Code Online (Sandbox Code Playgroud)

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