通常有两种原因导致access数据库文件越变越大。一是写进数据库的记录确实在日益增长;二是随着反复向数据库插入、修改和删除数据,又或者在数据库中不断创建、修改和删除数据库对象,如数据表、查询、窗体、模块等等操作使得数据库文件里累积了大量的碎片和垃圾。
对于第一种原因导致的数据库文件变大可以通过、删除无用的记录和压缩数据库等常规办法来减小文件体积。而对于第二种原因导致的数据库文件变大,常规的办法往往没不起作用,如何解决,题主可以参考以下知道回答。
https://..com/question/234449005
2. Access数据库文件过大,压缩了好久还是超过50m怎么办
1、经实践总结,当Access数据库超过50M时,网站的整体响应会变得非常缓慢,同时也会影响服务器上内其他网站的性能。如果容数据非常大,建议你升级为SQL Server数据库。
2、如果你的网站中有留言本等交互性页面,务必设置验证码等防护措施,以免被黑客灌入大量数据,出现数据库持续变大的不利情况。
3、我们在设计程序时,注意在页面的尾部加上数据库关闭代码,有利于网站的良好运行。代码示例如下:
Rs.Close
Set Rs=Nothing
Conn.Close
Set Conn=Nothing
3. ACCESS数据库变的非常大,如何瘦身
压缩一下就好了。
或者直接把后缀改成cab,使用的时候使用ACCESS打开。
ACCESS软件包括很多多余的后台处理代码,每一个视图生成过程都会有很多未清理得痕迹,你可以做个实验,拖放一个按钮到窗体上,查看他的代码,你会发现他已经再后台生成了一堆代码。压缩得目的,就是处理这些冗余分配空间。
4. 怎么解决ACCESS数据库太大造成运行慢的问题
1.时候在使用Access文件的时候,随着增删改的不断的连续,会导致文件越来越大。即使手动删除或者使用delete语句删除了大量的数据记录,会发现文件的大小依然没有减掉,而且随着你再往里写数据,又会增大。
2.产生这个现象的原因跟Access本身的机制有关,具体也不清楚,好像是有什么历史记录还是什么存储碎片。ACCESS数据库在进行删除操作后,并不从该数据库中把数据清除掉,而是删除其索引相关的东西,虽然显示不出来,但是那些东西还是在文件中存在的,所以会引起ACCESS数据库文件越来越大。即使是我们不通过代码来访问access文件,而只是通过用户界面访问,随着文件的增大,也会带来一系列的问题。其症状包括:对象可能打开得更慢,查询可能比正常情况下运行的时间更长,各种典型操作通常似乎也需要使用更长时间。更何况如果在网站应用中,采用的是Access作为数据库的话,这里就有了性能上的问题。文件越来越大,会影响查询的速度,而且ACCESS是采用独占方式工作的,也就是说一次只能一个进程打开这个数据库执行操作,如果是多个用户的话就要"排队"了,所以ACCESS数据库如果变为很大的话,执行一个查询时间就会变长,而进程"排队"的等待时间也就会变得很久,专业型的数据库就不同,可以同时接收多个并发的访问,可以采用SQL数据库或其它大型并发数很强的数据库。
3.但是很多时候我们是需要Access文件,往不同的地方拷贝的,比如说,一个Server上生成了一个Access文件,需要拷贝到另外的Server上,而且Server间如果网速不是很好的话,会需要很长的时间来传输这个文件。所以这时候我们希望这个文件在内容不变的前提下,越小越好。所以我们可以去除这个Access的冗余信息。
4.Office Access本身就有这种功能,我们可以通过菜单找到这个工具,然后单击这个图标手动压缩。
5.执行以下这几句代码就可以了。
首先引用C:Program FilesCommon FilesSystemadomsadox.dll,该DLL包含ADOX命名空间;
接着引用C:Program FilesCommon FilesSystemadomsjro.dll,该DLL包含JRO命名空间
注意:如,导入dll不成功,手动把com组件 导入为 .net组件,在用vs.net工具导入
///压缩修复ACCESS数据库,mdbPath为数据库绝对路径
public void Compact(string mdbPath)
{
if (!File.Exists(mdbPath)) //检查数据库是否已存在
{
throw new Exception("目标数据库不存在,无法压缩");
}
//声明临时数据库的名称
string temp = DateTime.Now.Year.ToString();
temp += DateTime.Now.Month.ToString();
temp += DateTime.Now.Day.ToString();
temp += DateTime.Now.Hour.ToString();
temp += DateTime.Now.Minute.ToString();
temp += DateTime.Now.Second.ToString() + ".bak";
temp = mdbPath.Substring(0, mdbPath.LastIndexOf("\") + 1) + temp;
//定义临时数据库的连接字符串
string temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + temp;
//定义目标数据库的连接字符串
string mdbPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=l1epc2";
//创建一个JetEngineClass对象的实例
JetEngineClass jt = new JetEngineClass();
//使用JetEngineClass对象的CompactDatabase方法压缩修复数据库
jt.CompactDatabase(mdbPath2, temp2);
//拷贝临时数据库到目标数据库(覆盖)
File.Copy(temp, mdbPath, true);
//最后删除临时数据库
File.Delete(temp);
}
5. 怎样减少ACCESS数据库大小
下面一些经验可以为你的问题提供答案。
常规办法:
1)删除不必要的数据和无用的ACCESS数据库对象例如表、查询、窗体和模块等;
2)压缩数据库
ACCESS2003压缩举例:打开数据库,点击菜单(工具)——数据库实用工具——压缩和修复数据库
非常规办法:
ACCESS数据库经过一段时间添加、更改和删除数据库对象后会产生很多代码及数据库对象碎片和垃圾,对于这些东西常规办法是无法清除的。这也是为什么你的ACCESS数据删除很多数据后,大小不变的原因所在。
怎么办呢?可以这样做:先建立一个同名空白数据库,放在另一个文件夹下,接着打开该空白数据库,导入原数据库全部有用的对象(包括:表、窗体、查询、模块、页、宏,无用的不要导入)
ACCESS2003导入对象举例:文件——获取外部数据——导入 ,打开“导入”对话框选择需要缩小的数据库后,点击导入按钮,打开“导入对象”对话框 选择全部有用的数据库对象,例如表、窗体等等后点击“确定”按钮 完成导入全部数据库对象。
经过上述过程后,所有的数据库垃圾都会被清除掉。再对其进行一次压缩操作,ACCESS数据库将会处在理论上最小状态。
6. access数据库多大合适
25M对于access已经不小了,
ACCESS的缺点
ACCESS是小型数据库,既然是小型就有他根本的局限性,以下几种情况下数据库基本上会吃不消:
1.数据库过大,一般ACCESS数据库达到50M左右的时候性能会急剧下降!
2.网站访问频繁,经常达到100人左右的在线。
3.记录数过多,一般记录数达到10万条左右的时候性能就会急剧下降!
7. 服务器上的Access 数据库体积过大,怎么办
进行分割, 例如当文件超过5兆的时候, 就不要再往里面写数据了, 然后新建一个, 很多用ACCESS的论坛都是这么做的, 技术应该是很成熟的, 你可以找个论坛的代码来参考一下 但是,还是换成高级一点的数据库比较好, ACCESS只是微软为入门级的家庭用户开发的数据库