视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
SQLSERVER数据库中的5173错误
2020-11-09 07:26:24 责编:小采
文档

SQLSERVER数据库中的5173错误 昨天同事给你我一个有问题的数据库,叫我修复一下因为客户那边需要这个数据库,这个数据库只有一个mdf文件和一个ldf文件, 当我附加数据库的时候报错,数据库是SQL2005 附上有损坏的数据库文件:http://files.cnblogs.com/lyhab

SQLSERVER数据库中的5173错误

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

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

附上有损坏的数据库文件:http://files.cnblogs.com/lyhabc/Data.zip

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

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

我的数据库文件放在C:\Users\Administrator\Desktop\新建文件夹目录下

1 USE [master]
2 GO
3 CREATE DATABASE [AdventureWorks2012] ON 
4 ( FILENAME = N'C:\Users\Administrator\Desktop\新建文件夹\GPOSDB.mdf' )
5 FOR ATTACH_REBUILD_LOG 
6 GO

报错内容:

1 文件激活失败。物理文件名称'D:\MSSSQL\Data\GPOSDB_log.LDF'可能不正确。
2 由于数据库没有完全关闭,无法重新生成日志。
3 消息 1813,级别 16,状态 2,第 1 行
4 无法打开新数据库 'GPOSDB'。CREATE DATABASE 中止。


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

http://www.blogjava.net/kent/articles/200991.html

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

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

用要恢复的GPOSDB.mdf文件覆盖刚才生成的数据库数据文件GPOSDB.mdf

然后把有问题的GPOSDB.mdf文件放在D盘,因为我新建的GPOSDB数据库放在D盘

启动SQL服务

文章说会显示数据库置疑,但是我的没有显示置疑

设置数据库允许直接操作系统表

在SSMS里输入下面SQL语句

1 USE master
2 go
3 sp_configure 'allow updates', 1 
4 go
5 RECONFIGURE WITH OVERRIDE
6 go

设置GPOSDB为紧急修复模式

1 ALTER DATABASE [GPOSDB] SET EMERGENCY 
2 GO
3 ALTER DATABASE GPOSDB SET SINGLE_USER
4 GO
5 
6 UPDATE sysdatabases
7 SET status = -32768
8 WHERE dbid = DB_ID('GPOSDB')
9 GO

但是报错

1 消息 259,级别 16,状态 1,第 1 行
2 不允许对系统目录进行即席更新。

尝试重建日志,但是语法错误,估计那篇文章是SQL2000的

1 DBCC rebuild_log('GPOSDB','D:\GPOSDB_log.ldf')
2 GO

1 消息 2526,级别 16,状态 3,第 1 行
2 DBCC 语句错误。请查阅文档以了解正确的 DBCC 语法和选项。

一查果然是

--* DBCC REBUILDLOG
--重建SQL Server 2000事务日志文件

其实一开始在步骤“设置数据库允许直接操作系统表” 就怀疑是不是SQL2000的,因为SQL2005或以后已经不能修改系统表了

最后把事务日志文件也放到D盘,然后使用下面的SQL语句来修复还是不行

1 ALTER DATABASE [GPOSDB] SET EMERGENCY 
2 GO
3 ALTER DATABASE GPOSDB SET SINGLE_USER
4 GO
5 
6 DBCC CheckDB (GPOSDB, REPAIR_ALLOW_DATA_LOSS)
7 GO

 1 消息 5173,级别 16,状态 1,第 2 行
 2 一个或多个文件与数据库的主文件不匹配。如果是尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应该从备份进行还原。
 3 日志文件 'D:\GPOSDB_log.ldf' 与主文件不匹配。该文件可能来自另一数据库,或者可能以前重新生成了日志。
 4 消息 5123,级别 16,状态 1,第 2 行
 5 尝试打开或创建物理文件 'D:\MSSSQL\Data\GPOSDB_log.LDF' 时,CREATE FILE 遇到操作系统错误 3(系统找不到指定的路径。)。
 6 消息 5024,级别 16,状态 2,第 2 行
 7 在 sysfiles1 中找不到主日志文件所对应的条目。无法重建日志。
 8 消息 5028,级别 16,状态 2,第 2 行
 9 系统无法激活足够的数据库来重建日志。
10 GPOSDB的 DBCC 结果。
11 CHECKDB 在数据库 'GPOSDB' 中发现 0 个分配错误和 0 个一致性错误。
12 消息 7909,级别 20,状态 1,第 2 行
13 紧急模式修复失败。您必须从备份中还原。


最后我还是放弃了~~ 希望知道怎麽解决的大侠可以给我帮助,谢谢了o(∩_∩)o

下载本文
显示全文
专题