SQL,2005附加如何附加

zhouixi 2012-04-27 02:50:31
直接附加是不行了。


sp_attach_single_file_db 'test3t1', 'G:\data\Tmp_Db.mdf'



这招不行,


消息 5120,级别 16,状态 5,第 1 行
无法打开物理文件 "f:\data\Tmp_Db_FILEGROUP_1.ndf"。操作系统错误 2:"2(系统找不到指定的文件。)"。
消息 5120,级别 16,状态 5,第 1 行
无法打开物理文件 "f:\data\Tmp_Db_FILEGROUP_2.ndf"。操作系统错误 2:"2(系统找不到指定的文件。)"。
文件激活失败。物理文件名称'D:\data\Tmp_Db.ldf'可能不正确。
消息 1813,级别 16,状态 2,第 1 行
无法打开新数据库 'test3t1'。CREATE DATABASE 中止。








sp_attach_db @dbname=Tmp_Db,
@filename1='G:\data\Tmp_Db.mdf',
@filename2='G:\data\Tmp_Db.ldf';



这招也不行。
消息 5120,级别 16,状态 5,第 1 行
无法打开物理文件 "f:\data\Tmp_Db_FILEGROUP_1.ndf"。操作系统错误 2:"2(系统找不到指定的文件。)"。
消息 5120,级别 16,状态 5,第 1 行
无法打开物理文件 "f:\data\Tmp_Db_FILEGROUP_2.ndf"。操作系统错误 2:"2(系统找不到指定的文件。)"。
消息 1813,级别 16,状态 2,第 1 行
无法打开新数据库 'Tmp_Db'。CREATE DATABASE 中止。





这个数据库里,就一个表,100W行数据。

起初做了,表分方案。有两个NDF,尼玛,突然不见了。
刚开始一开机就是置疑。

后面删除,附加就行了。
今天,尼玛附加 不上了,用语句也不行。

...全文
226 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouixi 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
你是ndf数据文件没了,不用妄想了 先恢复ndf吧
[/Quote]

我的天,上哪恢复去。都找不到了。难道就没有办法么。
billpu 2012-04-27
  • 打赏
  • 举报
回复
你是ndf数据文件没了,不用妄想了 先恢复ndf吧
zhouixi 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
这招玩过,广西一客户数据库坏了,就是这样恢复的。以后就从来没打过电话:)
[/Quote]

执行第一次的时候,

消息 5066,级别 16,状态 1,过程 sp_dboption,第 287 行
不能同时设置"单个用户"和"仅供 dbo 使用"这两个数据库选项。
消息 945,级别 14,状态 2,第 4 行
由于文件不可访问,或者内存或磁盘空间不足,所以无法打开数据库 'Tmp_Db'。有关详细信息,请参阅 SQL Server 错误日志。
@信心 2012-04-27
  • 打赏
  • 举报
回复
附加不行的话,
1、可行版本问题,高的兼容低的反之不行。
2、也有可能是权限问题,去年文件只读属性。
3、最后可能是系统问题了,只有reinstall
zhouixi 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
这招玩过,广西一客户数据库坏了,就是这样恢复的。以后就从来没打过电话:)
[/Quote]

呵呵 ,我试试看。如果行的话,结,贴如果不行。继续,回复讨论
一品梅 2012-04-27
  • 打赏
  • 举报
回复
这招玩过,广西一客户数据库坏了,就是这样恢复的。以后就从来没打过电话:)
zhouixi 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
右键数据库任务,选附加数据库,点省略号按钮找到mdf和ldf目录文件,然后附加即可,写什么代码。汗。。。
[/Quote]

兄弟不是我想这样写,直接右击附加根本不行。再说,我选文件之后,尼玛,
鸟电脑硬是要把NDF的信息带出来 我也没办法,所以 没办法附加,
你这招你用过没。。。
一品梅 2012-04-27
  • 打赏
  • 举报
回复
我把原来的数据库分离后,直接把日志文件给干掉了。原来在SQL 2000里经常这么干,只用一个mdf就附加了。没想到sql2005居然不行。我试验了一圈 终于找到一个成功的方法。转载,供后来者参考。

SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件

第一步:先建立一个同名数据库,停止SQL SERVER2005,将没有日志的的.mdf数据库文件覆盖刚新建的.mdf数据库文件,重新启动数据库。

第三步:在查询分析器中运行如下代码:

alter database 数据库名 set emergency —将数据库设置为紧急状态

use master

declare @databasename varchar(255)

set @databasename=‘数据库名’ —你的.mdf文件文件名

exec sp_dboption @databasename, N’single‘, N’true’ —将目标数据库置为单用户状态

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N’single‘, N’false’—将目标数据库置为多用户状态


执行出现“数据库其他多个文件与数据库主文件不匹配….”错误,再执行一次即可。
一品梅 2012-04-27
  • 打赏
  • 举报
回复
我把原来的数据库分离后,直接把日志文件给干掉了。原来在SQL 2000里经常这么干,只用一个mdf就附加了。没想到sql2005居然不行。我试验了一圈 终于找到一个成功的方法。转载,供后来者参考。

SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件

第一步:先建立一个同名数据库,停止SQL SERVER2005,将没有日志的的.mdf数据库文件覆盖刚新建的.mdf数据库文件,重新启动数据库。

第三步:在查询分析器中运行如下代码:

alter database 数据库名 set emergency —将数据库设置为紧急状态

use master

declare @databasename varchar(255)

set @databasename=‘数据库名’ —你的.mdf文件文件名

exec sp_dboption @databasename, N’single‘, N’true’ —将目标数据库置为单用户状态

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N’single‘, N’false’—将目标数据库置为多用户状态


执行出现“数据库其他多个文件与数据库主文件不匹配….”错误,再执行一次即可。
一品梅 2012-04-27
  • 打赏
  • 举报
回复
右键数据库任务,选附加数据库,点省略号按钮找到mdf和ldf目录文件,然后附加即可,写什么代码。汗。。。

22,206

社区成员

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

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