我拷贝了文件weighing_Data.MDF 和 weighing_Log.LDF , 大小均在5G左右,通过网上找的方式恢复数据库,到现在的结果是: 表中有主键的不能打开表, 没有主键的表可以打开数据,但是不能修改 不知道什么原因,windowsxp 原来的文件时从win2K中拷贝 操作步骤参考{http://blog.zxlm.cn/?action=show&id=12495} 0.备份数据文件'xxzx_discuz_Log.MDF' 1.新建一个同名的数据库'xxzx_discuz' 2.再停掉sqlserver服务(注意不要分离数据库) 3.用原数据库的数据文件'xxzx_discuz_Log.MDF' 覆盖掉新建的数据库 4.再重启sqlserver服务 5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名) 6.完成后一般就可以访问数据库中的数据了。这时,数据库本身一般还有问题,解决办法是:利用数据库的脚本创建一个新的数据库,然后通过DTS将数据导进去就行了. SQL代码 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 特别注意最后一步中的说明“这时,数据库本身一般还有问题,解决办法是:利用数据库的脚本创建一个新的数据库,然后通过DTS将数据导进去就行了”
这个问题第1个回答:
再跑一下
dbcc checkdb('数据库名')
结果是什么?
这个问题第2个回答:
表中有主键的不能打开表, 没有主键的表可以打开数据,但是不能修改
这个问题第3个回答:
我拷贝了文件weighing_Data.MDF 和 weighing_Log.LDF
直接附加即可,不用那么麻烦.
这个问题第4个回答:
或是用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(失败)
结果集
无
注释
只应对以前使用显式 sp_detach_db 操作从数据库服务器分离的数据库执行 sp_attach_db。如果必须指定多于 16 个文件,请使用带有 FOR ATTACH 子句的 CREATE DATABASE。
如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。
权限
只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。
示例
下面的示例将 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'
这个问题第5个回答:
有正常的MDF LDF文件,你可以直接通过附加数据库来完成数据库还原
这个问题第6个回答:
有原文件就很简单了。除了附加之外,还有更简单的方法:
在数据库里建立一个名为weighing的数据库,然后先停止一下服务,然后使用你的文件覆盖新建的数据库文件就可以了。
不用哪么麻烦
这个问题第7个回答:
dbcc checkdb('数据库名')
-------------
提示 数据库'weighing' 在 sysobjects,sysindexes,syscolumns或systypes中存在一致性错误,妨碍了进一步的 chechdb 处理。dbcc处理完毕,如果dbcc输出了错误信息,请与系统管理员联系。
直接附加即可,不用那么麻烦.
-----------
提示数据库文名和路径错误,不能附加
谢谢各位参与,我再尝试。。。
这个问题第8个回答:
引用 7 楼 haiqian119 的回复: dbcc checkdb('数据库名') ------------- 提示 数据库'weighing' 在 sysobjects,sysindexes,syscolumns或systypes中存在一致性错误,妨碍了进一步的 chechdb 处理。dbcc处理完毕,如果dbcc输出了错误信息,请与系统管理员联系。 直接附加即可,不用那么麻烦. ----------- 提示数据库文名和路径错误,不能附加 谢谢各位参与,我再尝试。。。 附加时自己更改为你现在文件存放的路径.一般在:
C:\Program Files\Microsoft SQL Server\MSSQL\Data
这个问题第9个回答:
理论上直接附加就可以
这个问题第10个回答:
我数据库程序文件安装 C:\Program Files
数据文件安装 E:\Program Files
现在把weighing_Data.MDF 和 weighing_Log.LDF 两个文件复制到E:\Program Files\Microsoft SQL Server\MSSQL\Data
使用dawugui 推荐SQL:
EXEC sp_attach_db @dbname = N'weighing',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\weighing_data.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\weighing_log.ldf'
运行结果
不能使文件与不同的数据库相关
这个问题第11个回答:
你这两个东东这么复杂?
这个问题第12个回答:
有没有试我的方法呢?
这个问题第13个回答:
TO HEROWANG
不行
To dawugui
是不是文件过大的原因?
这个问题第14个回答:
我的数据库不打 ,我就复制 覆盖就好了。
这个问题第15个回答:
我用小文件测试过HEROWANG 的方法,直接覆盖也是好的.
这个问题第16个回答:
楼主可以参考以下方法,我用过
[1] [2] 下一页