附加数据库时出错,数据库恢复失败
我首先使用下面命令恢复:
USE master;
GO
EXEC sp_detach_db @dbname = 'DaiGou';
EXEC sp_attach_single_file_db @dbname = 'DaiGou',
@physname = N'C:\DATABASE\DaiGou_Data.MDF';
消息 15010,级别 16,状态 1,过程 sp_detach_db,第 34 行
数据库 'DaiGou' 不存在。请提供有效的数据库名称。若要查看可用数据库,请使用 sys.databases。
文件激活失败。物理文件名称'd:\Program Files\Microsoft SQL Server\MSSQL\data\DaiGou_Log.LDF'可能不正确。
新的日志文件 'd:\DATABASE\DaiGou_log.LDF' 已创建。
正在将数据库 'DaiGou' 从版本 539 转换为当前版本 611。
数据库 'DaiGou' 正在从版本 539 升级到版本 551。
消息 601,级别 12,状态 3,第 1 行
由于数据移动,无法继续以 NOLOCK 方式扫描。
标题: Microsoft SQL Server Management Studio
------------------------------
无法访问数据库 DaiGou。 (ObjectExplorer)
如果你无法找到正常的日志文件, 请尝试下面的方法:
1. 将你的 N'd:\DATABASE\DaiGou_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:\DATABASE\DaiGou_Data.MDF' )
,
( FILENAME = N'd:\DATABASE\DaiGou_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:\DATABASE\DaiGou_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:\DATABASE\DaiGou_Data.MDF';
错误信息如下:
服务器: 消息 15010,级别 16,状态 1,过程 sp_detach_db,行 25
数据库 'DaiGou' 不存在。请用 sp_helpdb 来显示可用的数据库。
服务器: 消息 5170,级别 16,状态 1,行 1
无法创建文件 'e:\DATABASE\DaiGou_log.LDF',因为该文件已存在。
服务器: 消息 1813,级别 16,状态 1,行 1
未能打开新数据库 'DaiGou'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'd:\Program Files\Microsoft SQL Server\MSSQL\data\DaiGou_Log.LDF' 可能有误。