来自 数据库 2020-04-30 11:36 的文章
当前位置: 网上澳门金莎娱乐 > 数据库 > 正文

附加数据库时出错,数据库恢复失败

昨天同事给你我一个有问题的数据库,叫我修复一下因为客户那边需要这个数据库,这个数据库只有一个mdf文件和一个ldf文件,

附加数据库时出错,数据库恢复失败

时间:2011-9-21 17:19:24 来源: http://www.finaldata.org 作者:dstfy 浏览:207

数据恢复,达思数据恢复,数据库恢复我首先使用下面命令恢复:USE master;GOEXEC ...

数据恢复达思数据恢复数据库恢复

我首先使用下面命令恢复:
USE master;
GO
EXEC sp_detach_db @dbname = 'DaiGou';
EXEC sp_attach_single_file_db @dbname = 'DaiGou',
@physname = N'C:DATABASEDaiGou_Data.MDF';

消息 15010,级别 16,状态 1,过程 sp_detach_db,第 34 行
数据库 'DaiGou' 不存在。请提供有效的数据库名称。若要查看可用数据库,请使用 sys.databases。
文件激活失败。物理文件名称'd:Program FilesMicrosoft SQL ServerMSSQLdataDaiGou_Log.LDF'可能不正确。
新的日志文件 'd:DATABASEDaiGou_log.LDF' 已创建。
正在将数据库 'DaiGou' 从版本 539 转换为当前版本 611。
数据库 'DaiGou' 正在从版本 539 升级到版本 551。
消息 601,级别 12,状态 3,第 1 行
由于数据移动,无法继续以 NOLOCK 方式扫描。

当我附加数据库的时候报错,数据库是SQL2005

标题: Microsoft SQL Server Management Studio

无法访问数据库 DaiGou。 (ObjectExplorer)

 

 

如果你无法找到正常的日志文件, 请尝试下面的方法:

  1. 将你的 N'd:DATABASEDaiGou_Data.MDF' 改个名字
  2. 建一个同名的数据库, 数据和日志文件名与你附加的相同
  3. 停止 sql 服务
  4. 把新建库的 mdf 改一下名
  5. 把步骤1的名字改回来
  6. 重启sql 服务
  7. 如果你的数据库可用了, 那么恭喜你
  8. 如果还有可能, 那么将它设置为应急修复模式, 这样至少数据库中的数据可读, 将它们弄出来, 放到一个新库里面去, 然后用新库代替旧库
    ALTER DATABASE DB_NAME SET EMERGENCY
  9. 当然, 你也可以尝试在应急修复模式和模式之间做转换, 看看会不会好
    ALTER DATABASE DB_NAME SET ONLINE

 

2个文件一起恢复的话,
CREATE DATABASE [DaiGou] ON
( FILENAME = N'd:DATABASEDaiGou_Data.MDF' )
网上澳门金莎娱乐,,
( FILENAME = N'd:DATABASEDaiGou_Log.LDF' )
FOR ATTACH
提示下列错误:
消息 1813,级别 16,状态 2,第 1 行
无法打开新数据库 'DaiGou'。CREATE DATABASE 中止。
消息 9004,级别 21,状态 1,第 1 行
处理数据库 'DaiGou' 的日志时出错。如果可能,请从备份还原。如果没有可用备份,可能需要重新生成日志。

 

ALTER DATABASE [DaiGou] SET ONLINE


消息 5173,级别 16,状态 1,第 1 行
一个或多个文件与数据库的主文件不匹配。如果是尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应该从备份进行还原。
日志文件 'D:DATABASEDaiGou_log.ldf' 与主文件不匹配。该文件可能来自另一数据库,或者可能以前重新生成了日志。
消息 945,级别 14,状态 2,第 1 行
由于文件不可访问,或者内存或磁盘空间不足,所以无法打开数据库 'DaiGou'。有关详细信息,请参阅 SQL Server 错误日志。
消息 5069,级别 16,状态 1,第 1 行
ALTER DATABASE 语句失败。

设置为
ALTER DATABASE DB_NAME SET EMERGENCY
后,点击数据库报以下错误:

附上有损坏的数据库文件:

标题: Microsoft SQL Server Management Studio

无法显示请求的对话框。


其他信息:

无法显示请求的对话框。 (SqlMgmt)


执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)


无法打开数据库 'DaiGou' 版本 539。请将该数据库升级为最新版本。 (Microsoft SQL Server,错误: 946)

SQL 2000下操作
USE master;
GO
EXEC sp_detach_db @dbname = 'DaiGou';
EXEC sp_attach_single_file_db @dbname = 'DaiGou',
@physname = N'e:DATABASEDaiGou_Data.MDF';

错误信息如下:
服务器: 消息 15010,级别 16,状态 1,过程 sp_detach_db,行 25
数据库 'DaiGou' 不存在。请用 sp_helpdb 来显示可用的数据库。
服务器: 消息 5170,级别 16,状态 1,行 1
无法创建文件 'e:DATABASEDaiGou_log.LDF',因为该文件已存在。
服务器: 消息 1813,级别 16,状态 1,行 1
未能打开新数据库 'DaiGou'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'd:Program FilesMicrosoft SQL ServerMSSQLdataDaiGou_Log.LDF' 可能有误。

因为之前在论坛也遇到过,所以按照论坛的方法来解决,结果还是不行

把ldf文件移到别的地方,然后附加的时候使用下面SQL语句重建事务日志文件

我的数据库文件放在C:UsersAdministratorDesktop新建文件夹目录下复制代码 代码如下:USE [master] GO CREATE DATABASE [AdventureWorks2012] ON ( FILENAME = N'C:UsersAdministratorDesktop新建文件夹GPOSDB.mdf' ) FOR ATTACH_REBUILD_LOG GO报错内容:复制代码 代码如下:1 文件激活失败。物理文件名称'D:MSSSQLDataGPOSDB_log.LDF'可能不正确。 2 由于数据库没有完全关闭,无法重新生成日志。 3 消息 1813,级别 16,状态 2,第 1 行 4 无法打开新数据库 'GPOSDB'。CREATE DATABASE 中止。

我现在按照这篇文章再试一下

先新建一个GPOSDB的空库,然后停掉SQL服务

将刚才生成的数据库的日志文件GPOSDB_log.ldf删除

本文由网上澳门金莎娱乐发布于数据库,转载请注明出处:附加数据库时出错,数据库恢复失败

关键词: