附加不了数据库,出现不是主数据库文件

电脑帮帮手 2010-10-08 08:23:13
标题: Microsoft SQL Server Management Studio
------------------------------

无法为此请求检索数据。 (Microsoft.SqlServer.SmoEnum)



------------------------------
其他信息:

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

------------------------------

E:\PKXT\PKXT\bin\Debug\GDMC_SJK_PKXT.mdf 不是主数据库文件。 (Microsoft SQL Server,错误: 5171)

怎样解决这个问题,我试过网上很多方法,都不行,一开始我新建同名数据库,把这个数据库覆盖下去,打开数据库时候出现无法打开!
出现这个问题,是我不小心删除mdf文件,而不是在数据库先分离出来,之后我再附加备份数据库,问题就出现,可能是数据库那里应该还有些文件存在,但是不知在哪里查看
...全文
9199 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Andy-W 2012-11-21
  • 打赏
  • 举报
回复
引用 楼主 yangjie520op 的回复:
标题: Microsoft SQL Server Management Studio ------------------------------ 无法为此请求检索数据。 (Microsoft.SqlServer.SmoEnum) 出现这个问题,是我不小心删除mdf文件,而不是在数据库先分离出来,之后我再附加备份数据库,问题就出现,可能是数据库那里应该还有些文件存在,但是不知在哪里查看
关键是“小心删除mdf文件”,主数据库文件都给删除了,如果没有备库,只好从磁盘恢复方面考虑,如果磁盘没有给任何覆写,恢复的机会很大。
sofootball 2012-11-21
  • 打赏
  • 举报
回复
是注册表路径被修改了
wsliang2006 2011-11-05
  • 打赏
  • 举报
回复
mdf只有一个吧,怀疑文件本身坏,用备份的方法试一下
黄炜-HH 2011-11-05
  • 打赏
  • 举报
回复
相同问题!
shixiheng 2011-01-24
  • 打赏
  • 举报
回复
悲剧,咋就没个像样点的答案呢
qiqu114 2011-01-14
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jinsenhome 的回复:]
可能的原因:
1.数据库版本不对,低版本的sqlserver无法附件高版本的sqlserver数据库
2.文件损坏
3.不是主数据库文件
4.(数据库不是干净的关闭,且缺少日志文件)
5.呵呵,其他原因了
[/Quote]

说的是
jinsenhome 2011-01-13
  • 打赏
  • 举报
回复
可能的原因:
1.数据库版本不对,低版本的sqlserver无法附件高版本的sqlserver数据库
2.文件损坏
3.不是主数据库文件
4.(数据库不是干净的关闭,且缺少日志文件)
5.呵呵,其他原因了

tengyisong 2011-01-11
  • 打赏
  • 举报
回复
我也遇到了这个问题。。。我觉得可能是数据库太大的原因,因为小于2G的时候,拷贝到别人机器上附加没问题,但是大于2G的时候就附加不上去了。。。我用的是SQL Server2005开发版的
luxi0194 2010-10-11
  • 打赏
  • 举报
回复
文件有分组吧,先找到primary文件组的备份进行还原,然后再还原其他的
写字母为生 2010-10-10
  • 打赏
  • 举报
回复
。。。。。。。。
dlcyj 2010-10-10
  • 打赏
  • 举报
回复
恢复的问题,数据库文件,普通的数据恢复软件是恢复不了的。
SQLCenter 2010-10-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yangjie520op 的回复:]

这个问题主要是日志文件有问题,个人觉得,但是我不会怎样弄
[/Quote]

既然怀疑是日志的问题,那就参考这个吧

http://topic.csdn.net/u/20100929/13/105c0b54-9785-42f5-a58c-f6d939d0e3ae.html?95805
电脑帮帮手 2010-10-10
  • 打赏
  • 举报
回复
这个问题主要是日志文件有问题,个人觉得,但是我不会怎样弄
电脑帮帮手 2010-10-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liyingzi 的回复:]
企业管理器-新建同名数据库-右键-所有任务-还原数据库-选项-强制还原-常规-从设备
[/Quote]
这个我没有备份文件,不能从设备 我用2005 的
liyingzi 2010-10-09
  • 打赏
  • 举报
回复
企业管理器-新建同名数据库-右键-所有任务-还原数据库-选项-强制还原-常规-从设备
SQLCenter 2010-10-08
  • 打赏
  • 举报
回复
那就是MDF的问题,或者损坏。
电脑帮帮手 2010-10-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sqlcenter 的回复:]
引用 2 楼 yangjie520op 的回复:

引用 1 楼 sqlcenter 的回复:
这个mdf不是第一个mdf,多文件数据库。

那怎样处理呢????


找全这些MDF啊
[/Quote]

我这个项目是只有一个mdf的
SQLCenter 2010-10-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yangjie520op 的回复:]

引用 1 楼 sqlcenter 的回复:
这个mdf不是第一个mdf,多文件数据库。

那怎样处理呢????
[/Quote]

找全这些MDF啊
电脑帮帮手 2010-10-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sqlcenter 的回复:]
这个mdf不是第一个mdf,多文件数据库。
[/Quote]
那怎样处理呢????
SQLCenter 2010-10-08
  • 打赏
  • 举报
回复
这个mdf不是第一个mdf,多文件数据库。
//附加数据库 sp_attach_db 当使用 sp_attach_db 系统存储过程附加数据库时。 sp_attach_db:将数据库附加到服务器。 语法 sp_attach_db [ @dbname = ] 'dbname' , [ @filename1 = ] 'filename_n' [ ,...16 ] 参数 [@dbname =] 'dbname' 要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。 [@filename1 =] 'filename_n' 数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。 参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括文件文件包含指向数据库中其它文件的系统表。 该列表还必须包括数据库分离后所有被移动的文件。 返回代码值:0(成功)或 1(失败) eg:下面的示例将 pubs 中的两个文件附加到当前服务器。 EXEC sp_attach_db @dbname = N'pubs', @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf' EXEC sp_attach_db @dbname = N'Ty20051029101451aaa', @filename1 = N'd:\5屏幕\Ty20051029101451aaa_data.mdf', @filename2 = N'd:\5屏幕\Ty20051029101451aaa_log.ldf' ---解决问题了 //删除数据库 DROP DATABASE 从Microsoft? SQL Server? 删除一个或多个数据库。删除数据库将删除数据库所使用的数据库文件和磁盘文件。 语法 :DROP DATABASE database_name [ ,...n ] 参数 :database_name 指定要删除的数据库名称。从 master 数据库中执行 sp_helpdb 以查看数据库列表。 eg: exec sp_helpdb database_name exec Drpo DataBase [Ty20051029101451aaa] //分离数据库 可以使用 sp_detach_db 存储过程分离该数据库,然后使用带有 FOR ATTACH 子句的 CREATE DATABASE 重新附加。 sp_detach_db Archive GO CREATE DATABASE Archive ON PRIMARY (FILENAME = 'c:\program files\microsoft sqlserver\mssql\data\archdat1.mdf') FOR ATTACH GO //显示当前数据库信息 --select * from Master..sysDatabases //新建---不行啊 CREATE DATABASE TestOA ALTER DATABASE TestOA SET OFFLINE WITH ROLLBACK IMMEDIATE RESTORE DATABASE TestOA From disk='C:\Documents and Settings\Administrator\桌面\帐套\data\Template.Dat' ALTER DATABASE TestOA SET OFFLINE WITH ROLLBACK IMMEDIATE exec sp_detach_db Km20051030011601 --分离数据库 exec sp_attach_single_file_db km20051030011601,'D:\TestDatabase\Km20051030011601.mdf'--只附加.mdf文件

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧