SQL 删除 ACCESS 数据错误

zmld 2015-08-03 11:02:45
Access 数据库,用SQL分析器:delete from OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="d:\mq.mdb";User ID=Admin;Password=')
...tmpRecords
where mqdate between '2015-07-01' and '2015-07-31'

错误:
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 未能从表 'tmpRecords' 中删除。出现可恢复的、特定于提供程序的错误,如 RPC 失败。 Severity 16

如果把条件改为 mqdate =‘2015-07-01’,改为=号就没有错误??

...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmld 2015-08-03
  • 打赏
  • 举报
回复
太感谢了,用SQL2000没有报溢出。。。
  • 打赏
  • 举报
回复
你可以参考一下这个文章: Acess错误:"文件共享锁定数溢出" http://blog.csdn.net/hank5658/article/details/3808208
  • 打赏
  • 举报
回复
引用 3 楼 zmld 的回复:
如果数据少的话是不会出错的,数据多了才会出错,例如2015-07-01--2015-07-10,如果有1000条记录就不会错,如果有5000条以上就会出错,数字只是个大概数而已。


我经过反复试验,发现在一次删除9500条时,会报错:



然后,你可以在运行里打开 regedit,然后找到 MaxLocksPerFile 这个注册表项,然后修改里面的值为 更大的,比如10000
zmld 2015-08-03
  • 打赏
  • 举报
回复
如果数据少的话是不会出错的,数据多了才会出错,例如2015-07-01--2015-07-10,如果有1000条记录就不会错,如果有5000条以上就会出错,数字只是个大概数而已。
  • 打赏
  • 举报
回复

如果还不行,你试试设置一下这个吧,在sql server里面进行设置,把 这个Microsoft.Jet.OLEDB.4.0里面的勾都打上(因为我安装的是2013,所以是Microsoft.ACE.OLEDB.15.0):


  • 打赏
  • 举报
回复

我安装了一个office 2013 64位版的,试了一下,可以实现:

delete from OpenDataSource('Microsoft.ACE.OLEDB.15.0',
'Data Source="d:\t.accdb";User ID=Admin;Password=')
...tt
where mqdate between '2015-07-01' and '2015-07-31'


22,206

社区成员

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

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