Acess错误:"文件共享锁定数溢出"
对于ACCESS数据库,如果通过大量的SQL来操作数据库或者直接操作大量的数据时,经常会出现这种错误:
"文件共享锁定数溢出"
原因如下:
Access数据库,同时操作大量记录(9500条以上)时报错(这是指9500条SQL语句而不是数据的记录数)。
Microsoft JET Database Engine 错误'80040e21'
解决办法:
修改注册表
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Jet/4.0/Engines/Jet4.0]
"MaxLocksPerFile"=dword:05f5e0ff
这里需要注意的地方是这位置是32位系统的位置,而对于64位系统所对应的注册表的位置是不同的。
[HKEY_LOCAL_MACHINE/SOFTWARE/Wow6432Node/Microsoft/Jet/4.0/Engines/Jet 4.0]
另一种解决方案:
如果SQL数据量太大(例如:超过60W)的话,经测试即使修改了注册表信息,也无法实现,为此需要另一种解决方案。
1:首先,复制当前的ACCESS数据库到一个特定的目录下(用于出现异常时,好恢复数据库)。
2:设置SQL语句每次提交的数量(一般为2W),也就是每2W条SQL语句提交一次(防止出现文件共享锁定数溢出)。
3:如果在执行SQL语句的过程中出现异常,用备份的数据库覆盖原数据库。
注意:这个过程中,各个的衔接要多注意。
代码示例:
//1:备份当前的数据库到【BACKUPDB】下
string strAppDir = System.AppDomain.CurrentDomain.BaseDirectory;
string dbDirFileStr = strAppDir + "DBdata\\EduDB.mdb";//原数据库文件
string backupDbDir = strAppDir + "BACKUPDB";
DirectoryInfo directoryInfo = new DirectoryInfo(backupDbDir);
if (!directoryInfo.Exists)
{
directoryInfo.Create();
}
//设置文件隐藏
File.SetAttributes(backupDbDir,FileAttributes.Hidden);
//是否存在相同的文件,存在就删除
string backupDbDirFileStr = backupDbDir + "\\EduDB.mdb";
FileInfo dbFileInfo = new FileInfo(backupDbDirFileStr);
if (dbFileInfo.Exists)
System.IO.File.Delete(backupDbDirFileStr);
IOTool.CopyFiles(dbDirFileStr, backupDbDirFileStr, true);
//2:设置每10000条SQL语句,做一次提交
try
{
for (int j = 0; j <count; j++)
{
//拼接的SQL语句
if (j!=0 && j%20000 == 0)
{
commitNum++;
DbBusHelp.ExecuteSqlTran(SQLStringList);
SQLStringList.Clear();
}
}
//不足2W条SQL语句数
DbBusHelp.ExecuteSqlTran(SQLStringList);
SQLStringList.Clear();
}
}
}
catch (Exception ex)
{
CCLib.MV.LogTool.WriteEduAppLog(ex.Message, ex.StackTrace);
//3:出现异常,把备份的数据库恢复,是否关闭数据库连接
IOTool.CopyFiles(backupDbDirFileStr, dbDirFileStr, true);
return false;
}
Acess错误:"文件共享锁定数溢出"的更多相关文章
- 文件共享锁定数溢出-IWorkspaceEdit.StopEditing
在批量保存Feature至本地mdb的时候,当Feature的数量超过一定的值(该值不确定是不是Access文件的MaxLocksPerFile值,因为当MaxLocksPerFile为9500时,F ...
- Excel(Access)文件共享锁定数溢出(Error 3052)的解决方法
Excel或Access均可能会提示:文件共享锁定数溢出(Error 3052),主要版本为office 2003,在其他版本上未遇到.错误提示如下: Microsoft JET Database E ...
- ArcGIS中文件共享锁定数据溢出 这个方法不行,建议用gdb,不要用mdb
ArcGIS中文件共享锁定数据溢出 (2011-11-24 15:52:41) 转载▼ 标签: 杂谈 分类: GIS 文件共享锁定数溢出.(Error 3052)1. Access数据库,同时操作大量 ...
- 由于没有发现潜在的递归导致MySQL链接数溢出:MySQLNonTransientConnectionException: Data source rejected establishment of connection, message from server: "Too many connec
DAOProxy的代码:下面代码中红色高亮的就是出问题的地方,DAOFactory中会构造一个PersonDAOProxy,调用listPersons或者addPerson显然会导致递归,从而导致My ...
- Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件
Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件 在开发中,我们常常用打印log的方式来调试我们的应用.在Java中我们常常使用方法System.out ...
- 严重性 代码 说明 项目 文件 行 禁止显示状态错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译。
严重性 代码 说明 项目 文件 行 禁止显示状态错误 C1128 节数超过对象文件格式限制: 请使用 /bigobj 进行编译. 默认情况下,对象文件最多可存放 65,536 (2^16) 个可寻址的 ...
- Delphi Windows API判断文件共享锁定状态(OpenFile和CreateFile两种方法)
一.概述 锁是操作系统为实现数据共享而提供的一种安全机制,它使得不同的应用程序,不同的计算机之间可以安全有效地共享和交换数据.要保证安全有效地操作共享数据,必须在相应的操作前判断锁的类型,然后才能确定 ...
- Delphi Windows API判断文件共享锁定状态(使用OpenFile来判断)
一.概述 锁是操作系统为实现数据共享而提供的一种安全机制,它使得不同的应用程序,不同的计算机之间可以安全有效地共享和交换数据.要保证安全有效地操作共享数据,必须在相应的操作前判断锁的类型,然后才能确定 ...
- C# 如何获取错误所在行数
两种方法,一种是利用error.StackTrace,另外一种是try-catch找到错误行数,具体如下: 一.error.StackTrace代码 int i = ex.StackTrace.Ind ...
随机推荐
- Unix/Linux环境C编程入门教程(22) C/C++如何获取程序的运行时间
1.问:知道程序运行时间我们可以做什么? 在<C++应用程序性能优化>一书中,如果大家读过相信大家一定对性能优化这一块非常上心,文中总是对优化前后的时间对比非常直观给我们一个感受. 那么我 ...
- Linux常用C函数---字符测试篇
函数讲解部分参考http://net.pku.edu.cn/~yhf/linux_c/ isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isdigit,islower,isupp ...
- UVA11988 Broken KeyBoard
链表的思想很简单,要做到活用也不难.一般我是这样做得,从实际问题出发,先高度的概括符不符合链表的特点.能不能用链表简单解决.接着,就是编码.链表编码要理清细节性思路,最好是简单的画下图,正如改题的链表 ...
- poj 1088 滑雪_记忆化搜索
题意:略 直接用记忆化搜索就行了 #include<cstdio> #include<iostream> using namespace std; int n,m; int m ...
- LSH算法原理
原始链接--http://www.jiahenglu.net/NSFC/LSH.html LSH(Location Sensitive Hash),即位置敏感哈希函数.与一般哈希函数不同的是位置敏感性 ...
- vsts
首先要搞清楚啥是VSTS,这对于我们安装配置有基础作用.看看这张组织结构图就一目了然了.Visual Studio Team Suite就是我们常说的VS.NET 2005开发环境,安装包3G左右的 ...
- 利用sql里的xpath生成表格
SELECT (SELECT * from Common.Common_Setup_CityData FOR XML PATH('tr'), TYPE).query(' for $item ...
- n多边形面积
“ 改革春风吹满地,不会AC没关系;实在不行回老家,还有一亩三分地.谢谢!(乐队奏乐)” 话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是云里雾里,而且,还竟然来这么几句打油诗.好呀 ...
- VASP 软件在ubuntu10.04下的安装过程
开始三步按照http://www.cnblogs.com/baby-lee进行. 安装完intel fortran composer后,需要把ifort命令写进.bashrc文件. 4.添加ifort ...
- Android 大神博客汇集
非常给力的CSDNBlog和个人Blog,这些Blog都有一个共同的特点,即内容详实,讲解透彻,也算是给后来的初学者指一条路吧!只要你下定决心跟随强者的脚步,成为人们眼中的大神,只不过是时间问题! 下 ...