附加数据库失败 错误号5173 请高手帮忙

时间:2021-08-01 20:49:37
错误提示:一个或多个文件与数据库的主文件不匹配。如果是尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应该从备份进行还原。错误5173

我现在只有mdf 和ldf这两个文件 ,没有备份。
请高手帮忙解决下,万分感谢!

21 个解决方案

#1


1、附加数据库
2、建立一个同名的数据库,建立数据库的时候文件名要和你现有的文件名相同,然后用现有的文件名进行覆盖(需要先停止服务)

#2


以下内容来自google...

 
                    1.新建一个同名的数据库 
                        2.再停掉sql server(注意不要分离数据库) 
                        3.用要附加的数据文件覆盖掉这个新建的数据库 
                        4.再重启sql server 
                        5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名) 
                        6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用 
                        数据库的脚本创建一个新的数据库,并将数据导进去就行了. 
                        USE MASTER 
                        GO 
                        SP_CONFIGURE ’ALLOW UPDATES’,1 RECONFIGURE WITH OVERRIDE 
                        GO 
                        UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME=’置疑的数据库名’ 
                        Go 
                        sp_dboption ’置疑的数据库名’, ’single user’, ’true’ 
                        Go 
                        DBCC CHECKDB(’置疑的数据库名’) 
                        Go 
                        update sysdatabases set status =28 where name=’置疑的数据库名’ 
                        Go 
                        sp_configure ’allow updates’, 0 reconfigure with override 
                        Go 
                        sp_dboption ’置疑的数据库名’, ’single user’, ’false’ 
                        Go

#3


http://topic.csdn.net/t/20031220/01/2583703.html

#4


[align=right]                        备份你的数据文件,试试按下面的步骤处理能否解决:
                        1.新建一个同名的数据库
                        2.再停掉sql server(注意不要分离数据库)
                        3.用要附加的数据文件覆盖掉这个新建的数据库
                        4.再重启sql server
                        5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
                        6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
                        数据库的脚本创建一个新的数据库,并将数据导进去就行了.
                        USE MASTER
                        GO
                        SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
                        GO
                        UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
                        Go
                        sp_dboption '置疑的数据库名', 'single user', 'true'
                        Go
                        DBCC CHECKDB('置疑的数据库名')
                        Go
                        update sysdatabases set status =28 where name='置疑的数据库名'
                        Go
                        sp_configure 'allow updates', 0 reconfigure with override
                        Go
                        sp_dboption '置疑的数据库名', 'single user', 'false'
                        Go[/align]

#5


执行UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='Shopdb'的时候报错。错误:
消息 259,级别 16,状态 1,第 1 行
不允许对系统目录进行即席更新。

怎么回事?

#6


引用 5 楼 ANGELSCURSE 的回复:
执行UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='Shopdb'的时候报错。错误:
消息 259,级别 16,状态 1,第 1 行
不允许对系统目录进行即席更新。

怎么回事?

1.关闭SQLSERVER  
  2.删除你测试中产生的:.ldf  
  3.重启SQLSERVER  
  sp_attach_single_file_db   [   @dbname   =   ]   'dbname'  
          ,   [   @physname   =   ]   'physical_name'

#7


现在运行DBCC CHECKDB('置疑的数据库名')时出错
错误:

服务器: 消息 8908,级别 16,状态 1,行 1
表错误: 数据库 ID 14,对象 ID 1,索引 ID 0。链的链接不匹配。(1:981)->next = (1:619),但 (1:619)->prev = (1:54688)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 

#8


sp_dboption '置疑的数据库名', 'single user', 'true' 
go
dbcc checkdb('置疑的数据库名',REPAIR_ALLOW_DATA_LOSS) 


#9


执行dbcc checkdb('置疑的数据库名',REPAIR_ALLOW_DATA_LOSS) 
错误:
表错误: 数据库 ID 14,对象 ID 1,索引 ID 0。链的链接不匹配。(1:981)->next = (1:619),但 (1:619)->prev = (1:54688)。 
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
执行
exec   sp_msforeachtable   'DBCC   CHECKTABLE(''?'',REPAIR_ALLOW_DATA_LOSS)'   
  exec   sp_msforeachtable   'DBCC   DBREINDEX(''?'')' 
错误: 
由于数据移动,未能继续以 NOLOCK 方式扫描。

#10


文件多大? 提供下,我帮你看看 。   邮箱   214455969@qq.com

#11


发给你了 450多M

#12


引用 11 楼 ANGELSCURSE 的回复:
发给你了 450多M
  要哪个表数据?

#13


引用 11 楼 ANGELSCURSE 的回复:
发给你了 450多M


看了 能看到一些表    ,还有 sysobjects系统表有数据块缺失  。不知道你这个文件是怎么造成的。

#14


你用MDF强制附加,然后,生成LDF,试下,应该可以解决。

#15


如果步骤上有什么困难,可以把库发来我帮你搞。

#16


引用 14 楼 dlcyj 的回复:
你用MDF强制附加,然后,生成LDF,试下,应该可以解决。


数据页缺损 ,不是什么日志问题.

#17


引用 13 楼 redsuki 的回复:
引用 11 楼 ANGELSCURSE 的回复:
发给你了 450多M 
 

看了 能看到一些表    ,还有 sysobjects系统表有数据块缺失  。不知道你这个文件是怎么造成的。


能把能看到的表的数据都给我弄出来吗 ,新建个库,然后给我个备份,谢谢了
另外,能告诉我你怎么办到的吗  万分感谢 !

#18


关注...

#19


引用 16 楼 redsuki 的回复:
引用 14 楼 dlcyj 的回复:
你用MDF强制附加,然后,生成LDF,试下,应该可以解决。 
 

数据页缺损 ,不是什么日志问题.

数据页缺损,也没有关系,顶多表链断掉,重新补一下,通过系统表修复一下就可以了。要是没有人帮忙,把库发给我,我给你搞。

#20


我也遇到这类问题了,有一个6M多的文件,谁能帮忙看一下

#21


我也遇到这个问题了 是优盘复制备份 造成的!!怎么办?谁帮忙修复一下

#1


1、附加数据库
2、建立一个同名的数据库,建立数据库的时候文件名要和你现有的文件名相同,然后用现有的文件名进行覆盖(需要先停止服务)

#2


以下内容来自google...

 
                    1.新建一个同名的数据库 
                        2.再停掉sql server(注意不要分离数据库) 
                        3.用要附加的数据文件覆盖掉这个新建的数据库 
                        4.再重启sql server 
                        5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名) 
                        6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用 
                        数据库的脚本创建一个新的数据库,并将数据导进去就行了. 
                        USE MASTER 
                        GO 
                        SP_CONFIGURE ’ALLOW UPDATES’,1 RECONFIGURE WITH OVERRIDE 
                        GO 
                        UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME=’置疑的数据库名’ 
                        Go 
                        sp_dboption ’置疑的数据库名’, ’single user’, ’true’ 
                        Go 
                        DBCC CHECKDB(’置疑的数据库名’) 
                        Go 
                        update sysdatabases set status =28 where name=’置疑的数据库名’ 
                        Go 
                        sp_configure ’allow updates’, 0 reconfigure with override 
                        Go 
                        sp_dboption ’置疑的数据库名’, ’single user’, ’false’ 
                        Go

#3


http://topic.csdn.net/t/20031220/01/2583703.html

#4


[align=right]                        备份你的数据文件,试试按下面的步骤处理能否解决:
                        1.新建一个同名的数据库
                        2.再停掉sql server(注意不要分离数据库)
                        3.用要附加的数据文件覆盖掉这个新建的数据库
                        4.再重启sql server
                        5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)
                        6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用
                        数据库的脚本创建一个新的数据库,并将数据导进去就行了.
                        USE MASTER
                        GO
                        SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE
                        GO
                        UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='置疑的数据库名'
                        Go
                        sp_dboption '置疑的数据库名', 'single user', 'true'
                        Go
                        DBCC CHECKDB('置疑的数据库名')
                        Go
                        update sysdatabases set status =28 where name='置疑的数据库名'
                        Go
                        sp_configure 'allow updates', 0 reconfigure with override
                        Go
                        sp_dboption '置疑的数据库名', 'single user', 'false'
                        Go[/align]

#5


执行UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='Shopdb'的时候报错。错误:
消息 259,级别 16,状态 1,第 1 行
不允许对系统目录进行即席更新。

怎么回事?

#6


引用 5 楼 ANGELSCURSE 的回复:
执行UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='Shopdb'的时候报错。错误:
消息 259,级别 16,状态 1,第 1 行
不允许对系统目录进行即席更新。

怎么回事?

1.关闭SQLSERVER  
  2.删除你测试中产生的:.ldf  
  3.重启SQLSERVER  
  sp_attach_single_file_db   [   @dbname   =   ]   'dbname'  
          ,   [   @physname   =   ]   'physical_name'

#7


现在运行DBCC CHECKDB('置疑的数据库名')时出错
错误:

服务器: 消息 8908,级别 16,状态 1,行 1
表错误: 数据库 ID 14,对象 ID 1,索引 ID 0。链的链接不匹配。(1:981)->next = (1:619),但 (1:619)->prev = (1:54688)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 

#8


sp_dboption '置疑的数据库名', 'single user', 'true' 
go
dbcc checkdb('置疑的数据库名',REPAIR_ALLOW_DATA_LOSS) 


#9


执行dbcc checkdb('置疑的数据库名',REPAIR_ALLOW_DATA_LOSS) 
错误:
表错误: 数据库 ID 14,对象 ID 1,索引 ID 0。链的链接不匹配。(1:981)->next = (1:619),但 (1:619)->prev = (1:54688)。 
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
执行
exec   sp_msforeachtable   'DBCC   CHECKTABLE(''?'',REPAIR_ALLOW_DATA_LOSS)'   
  exec   sp_msforeachtable   'DBCC   DBREINDEX(''?'')' 
错误: 
由于数据移动,未能继续以 NOLOCK 方式扫描。

#10


文件多大? 提供下,我帮你看看 。   邮箱   214455969@qq.com

#11


发给你了 450多M

#12


引用 11 楼 ANGELSCURSE 的回复:
发给你了 450多M
  要哪个表数据?

#13


引用 11 楼 ANGELSCURSE 的回复:
发给你了 450多M


看了 能看到一些表    ,还有 sysobjects系统表有数据块缺失  。不知道你这个文件是怎么造成的。

#14


你用MDF强制附加,然后,生成LDF,试下,应该可以解决。

#15


如果步骤上有什么困难,可以把库发来我帮你搞。

#16


引用 14 楼 dlcyj 的回复:
你用MDF强制附加,然后,生成LDF,试下,应该可以解决。


数据页缺损 ,不是什么日志问题.

#17


引用 13 楼 redsuki 的回复:
引用 11 楼 ANGELSCURSE 的回复:
发给你了 450多M 
 

看了 能看到一些表    ,还有 sysobjects系统表有数据块缺失  。不知道你这个文件是怎么造成的。


能把能看到的表的数据都给我弄出来吗 ,新建个库,然后给我个备份,谢谢了
另外,能告诉我你怎么办到的吗  万分感谢 !

#18


关注...

#19


引用 16 楼 redsuki 的回复:
引用 14 楼 dlcyj 的回复:
你用MDF强制附加,然后,生成LDF,试下,应该可以解决。 
 

数据页缺损 ,不是什么日志问题.

数据页缺损,也没有关系,顶多表链断掉,重新补一下,通过系统表修复一下就可以了。要是没有人帮忙,把库发给我,我给你搞。

#20


我也遇到这类问题了,有一个6M多的文件,谁能帮忙看一下

#21


我也遇到这个问题了 是优盘复制备份 造成的!!怎么办?谁帮忙修复一下