Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

增加记录时有时候会出现3001错误

凌绝顶  发表于:2009-06-23 20:25:57  
复制

数据库只有一个表,一个主键。表的规模很大,预计要几千万条记录。

 

主程序用VB6写的。开始没有什么问题。

 

表中记录数增多至400万条以上,增加记录时,不定期的出现3001错误。随着记录数的继续增多,出现这个错误的几率越来越频繁!只有对数据库做修复才能恢复正常。

 

尝试用两种增加方法记录,结果差不多。

 

1 是用recordset.AddNew和.Update的方法

2 是用SQL的查询语句:Insert into的方法

 

请问有什么高招?

 

那些要我换用SQL SERVER建议请不要说了。

 

 

Top
黎红军 发表于:2009-06-24 00:45:53

你的记录量确实不少,为什么非要用acc呢?

sql 也有免费的那个版的呀。



点燃一支烟 发表于:2009-06-24 09:52:35
可能库里面存在数据参数类型不正确不相符,或与其他参数冲突,或不在可以接受的范围内等问题

凌绝顶 发表于:2009-06-24 13:15:47

“数据参数类型不正确、不相符的问题”,不是这个原因!



董秀杰 发表于:2009-06-24 19:19:27

有没有考虑优化一下数据,几千万条?都很重要吗?



善裕 发表于:2009-06-25 08:31:34

无效的参数。(错误 3001)

试图进行的操作需要某 DLL中的一个例行程序,但该例行程序中的一个参数无效。检查输入项以确定正确的参数,然后重试一次。

这种错误也会发生在: 当试图在一个方法的参数中使用多个互斥的常量,例如在 OpenRecordset 方法中的选项 参数中指定 dbConsistentdbInconsistent



凌绝顶 发表于:2009-06-25 11:11:21

今天尝试将数据库从2003升级至2007,DAO33.6又不支持ACCESS2007,好不容易找到了“Microsoft Office 12.0 Access databse engine object Library",可以打开了。

运行程序,开始加入了一些记录,看似正常。但不久就报出:
    运行时错误‘3049’
    不能打开数据库”。应用程序可能无法识别该数据库,或文件可能损坏

ACCESS2003时,DAO3.6,对应的错误是:
    运行时错误‘3001’
    无法识别的参数

晕死了!结果是类似的,当表中记录数超过一定数目(大约450万)时,两种DAO链接库,都会在加入记录时损坏数据库!

 

刚刚测试了ADO的方法,也是3049错误。

 

看来不是连接库的问题,是ACCESS本身的BUG!记录数超过一定数目时,就变得不稳定了。出错时总停在recordset.update上。

 

.AddNew

....

.Update

 

不是每次都出错!

 



善裕 发表于:2009-06-25 12:50:27

不能打开数据库 <name>。它可能不是一个应用程序所能识别的数据库,或是文件可能已经损坏。(错误 3049)

可能的原因:

  • 正试图打开一个非Microsoft Jet 数据库数据库,例如 Btrieve、dBASE 或 Paradox 数据库或数据表。应该将数据库或数据表链接到一个现存的 Microsoft® Jet 数据库。
  • 试图导入或链接一个 Paradox 数据库或数据表,但找不到相应的 .px 文件。请确认 .px 文件在和 Paradox 数据库或数据表在同一的目录里,然后重试一次。
  • 假如被指定的数据库是一个 Microsoft Jet 数据库,那么它已被损坏。应该尝试修复数据库。假如不能修复数据库,请从备份中还原数据库或创建新的数据库。



sosopain 发表于:2009-06-26 08:22:18

发生错误的时侯你的数据库大小是多少?



凌绝顶 发表于:2009-06-27 08:44:46

大概知道原因了。ACCESS数据库的容量上限是2GB,超过这个上限,数据库就不稳定了。

 

我的数据库的大小是2,096,904K

 

目前,似乎没有解决方法了,只好换SQL SERVER了。

 

当前是大约505万条记录。

 

换成SQL SERVER 2000后遇到的烦恼:

1、占用空间过大,30GB左右(还是收缩后的)

2、查询、写入时间长。表结构、索引和ACCESS的表一样。速度与ACCESS差太多

3、连接、查询、写入,有时会超时。

 

前2条,就是致命的。



sosopain 发表于:2009-06-28 10:10:18

你可以试试升级到2007,数据库文件放在NTFS分区上, 链接用ADO, 

 

不过,数据库记录上了千万条, 一般不再建议用access做数据源了.除非你的系统不分发.

 

你可以检查一下SQL server2000为什么这么慢, 理论上不会这么慢.是不是服务器的硬件配置引致?

 

 



总记录:10篇  页次:1/1 9 1 :