利用SQL的导入导出功能恢复损坏的ACCESS库
1.新建个ACCESS数据库
2.打开SQL server的企业管理器,数据库上右键所有任务选导入数据
来源数据选access 然后选择原来已经损坏的数据库
目的也选ACCESS 然后选择新建的数据库
下面就是下一步 完成这些了
完成之后打开db1.mdb 可以看到数据都在里面了 这时候还不能正常使用 因为默认值 还有自动递增类型都丢失了 需要按原来的数据结构修正过来
'---------------------------------
上文已经将全部数据都恢复出来了,但当你试图将ID的类型从数字改为自动递增的时候发现系统并不允许,这个麻烦了,是不是前面的都白做了呢?这个bug确实难住了我好一阵。
于是我发现了迂回的方法,以forum表为例,里面的ID应该为自动递增 posttime,lasttime的默认值应该是now(),ID字段在有数据的时候是不允许修改的, 下面就是俺刚刚独创的修复方法了,呵呵,打开FORUM表 全选 删除 然后保存后关闭表,在FORUM表上右键设计表,这时候可以修改ID的字段类型了,顺便把默认值也都改好。
也许你会问,现在改好有什么用啊,记录都被删除了,恩这时候我们再利用一下上文的SQL SERVER的导入到处功能,操作完全同上文。
呵呵,秘诀传授完毕,初步测试有效;这个方法比利用网上流传的修复工具要有效的多,只要了解数据库结构而且ACCESS库不是坏的无可救要救可以,现在你可以帮助别人修复数据库了 :)
后记: 将表的记录全部删除的时候 直接打开ACCESS 全选删除是可以的,但如果记录很多的情况下(比如reforum表)机器会死掉,所以比较好的方法是将数据库放在你的网站下,用asp来删除 先把数据库剪贴过去,修改conn.asp 写个asp文件
<!--#include file=conn.asp--> <% conn.execute("delete * from forum") conn.execute("delete * from reforum") conn.execute("delete * from [user]") ................... %>
一共有20来个表,多复制几次:)
都完成后用ACCESS压缩修复下 ,好了你的数据库重生完毕 :)
|