解决Access文件越来越大的问题[通俗易懂]

解决Access文件越来越大的问题[通俗易懂]有时候在使用Access文件的时候,随着增删改的不断的连续,会导致文件越来越大。即使手动删除或者使用delete语句删除了大量的数据记录,会发现文件的大小依然没有减掉,而且随着你再往里写数据,又会增…

解决Access文件越来越大的问题[数据库教程]

有时候在使用Access文件的时候,随着增删改的不断的连续,会导致文件越来越大。即使手动删除或者使用delete语句删除了大量的数据记录,会发现文件的大小依然没有减掉,而且随着你再往里写数据,又会增大。

产生这个现象的原因跟Access本身的机制有关,具体也不清楚,好像是有什么历史记录还是什么存储碎片。ACCESS数据库在进行删除操作后,并不从该数据库中把数据清除掉,而是删除其索引相关的东西,虽然显示不出来,但是那些东西还是在文件中存在的,所以会引起ACCESS数据库文件越来越大。即使是我们不通过代码来访问access文件,而只是通过用户界面访问,随着文件的增大,也会带来一系列的问题。其症状包括:对象可能打开得更慢,查询可能比正常情况下运行的时间更长,各种典型操作通常似乎也需要使用更长时间。更何况如果在网站应用中,采用的是Access作为数据库的话,这里就有了性能上的问题。文件越来越大,会影响查询的速度,而且ACCESS是采用独占方式工作的,也就是说一次只能一个进程打开这个数据库执行操作,如果是多个用户的话就要”排队”了,所以ACCESS数据库如果变为很大的话,执行一个查询时间就会变长,而进程”排队”的等待时间也就会变得很久,专业型的数据库就不同,可以同时接收多个并发的访问,可以采用SQL数据库或其它大型并发数很强的数据库。

 

但是很多时候我们是需要Access文件,往不同的地方拷贝的,比如说,一个Server上生成了一个Access文件,需要拷贝到另外的Server上,而且Server间如果网速不是很好的话,会需要很长的时间来传输这个文件。所以这时候我们希望这个文件在内容不变的前提下,越小越好。所以我们可以去除这个Access的冗余信息。

 

Office Access本身就有这种功能,我们可以通过菜单找到这个工具,然后单击这个图标手动压缩。

技术分享图片

 

但是如果觉得每次手动去压缩的话很麻烦,我们可以设置每次关闭Access的时候,让它自己完成压缩。只要勾选下边的选框就可以。

 

技术分享图片

 

但是注意,上边的解决方案前提是,机器上安装了Office Access. 

 

比如说在一个服务器上,我有一个应用是以Access做数据库的,但是只是通过C#代码来操作这个文件,服务器上根本没有安装Office Access.随着代码不断的操作这个文件,这个文件还是会变大。然后我们如果想拷贝这个文件,但是越来越大,越来越慢。此时我们怎么压缩?我们可以在代码中加入一些代码,这些代码可以在功能完成后,自动的压缩Access文件。可以把这些代码加入到你的业务逻辑代码后边。等所有的东西都完成了,执行以下这几句代码就可以了。

首先引用C:Program FilesCommon FilesSystemadomsadox.dll,该DLL包含ADOX命名空间; 
接着引用C:Program FilesCommon FilesSystemadomsjro.dll,该DLL包含JRO命名空间 
注意:如,导入dll不成功,手动把com组件 导入为 .net组件,在用vs.net工具导入 

 

 1 ///压缩修复ACCESS数据库,mdbPath为数据库绝对路径
 2         public void Compact(string mdbPath)
 3         {
 4             if (!File.Exists(mdbPath)) //检查数据库是否已存在
 5             {
 6                 throw new Exception("目标数据库不存在,无法压缩");
 7             }
 8             //声明临时数据库的名称
 9             string temp = DateTime.Now.Year.ToString();
10             temp += DateTime.Now.Month.ToString();
11             temp += DateTime.Now.Day.ToString();
12             temp += DateTime.Now.Hour.ToString();
13             temp += DateTime.Now.Minute.ToString();
14             temp += DateTime.Now.Second.ToString() + ".bak";
15             temp = mdbPath.Substring(0, mdbPath.LastIndexOf("") + 1) + temp;
16             //定义临时数据库的连接字符串
17             string temp2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + temp;
18             //定义目标数据库的连接字符串
19             string mdbPath2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=l1epc2";
20             //创建一个JetEngineClass对象的实例
21             JetEngineClass jt = new JetEngineClass();
22             //使用JetEngineClass对象的CompactDatabase方法压缩修复数据库
23             jt.CompactDatabase(mdbPath2, temp2);
24             //拷贝临时数据库到目标数据库(覆盖)
25             File.Copy(temp, mdbPath, true);
26             //最后删除临时数据库
27             File.Delete(temp);
28         }

代码100分

 

解决Access文件越来越大的问题

原文:https://www.cnblogs.com/xiongyunsheng/p/13437148.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6870.html

(0)
上一篇 2023-03-31
下一篇 2023-03-31

相关推荐

  • oracle怎么更新索引_mysql索引失效

    oracle怎么更新索引_mysql索引失效MySQL使用存储的键分布基数来确定表连接顺序在决定对查询中的特定表使用哪些索引时,也会使用使用键分布基数 ANALYZE TABLE 表名 可以更新表的索引基数,使其更接近非重复的记录数,记录数可以

    2023-01-31
    170
  • Python连接PostgreSQL的方法

    Python连接PostgreSQL的方法PostgreSQL是一种开源的关系型数据库管理系统,具有高度的可扩展性和可靠性,被广泛用于企业级的应用程序。在本篇文章中,我们将探索如何使用Python连接PostgreSQL,以及一些常见的数据操作。如果你是Python工程师并且正在寻找连接PostgreSQL数据库的方法,那么这篇文章适合你。

    2024-08-09
    27
  • mysql 实战45讲_MySQL 10061

    mysql 实战45讲_MySQL 10061Mysql 一.DML-数据增删改 1. 添加 格式1:insert into 表名 (字段1,字段2….) values (值1,值2); 注意: 1、数字直接填写,非数字必须加引号(建议单引号)…

    2023-02-16
    184
  • python正则匹配列表中的任意一个_sql的正则表达式查询

    python正则匹配列表中的任意一个_sql的正则表达式查询
    概述 上一章 查询的过滤条件,我们了解了MySQL可以通过 like % 通配符来进行模糊匹配。同样的,它也支持其他正则表达式的匹配,我们在MySQL中使用…

    2023-04-06
    144
  • 埋点数据采集工具_埋点方案

    埋点数据采集工具_埋点方案更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 1.前言 埋点设计文档面向开发的埋点需求说明书,目的是让开发理解需要在什么情况下做哪些埋点采集,以及具体需要的属性

    2023-06-05
    149
  • 如何在Windows 10中添加环境变量

    如何在Windows 10中添加环境变量环境变量是Windows操作系统中重要的配置,它定义了操作系统和其他应用程序在运行时需要用到的路径、选项和参数。在Windows 10中添加环境变量并配置正确可以使你的计算机更高效地运行。

    2024-04-17
    68
  • StoneDB读写分离实践方案「终于解决」

    StoneDB读写分离实践方案「终于解决」在 StoneDB 1.0 版本中,InnoDB 引擎处理 OLTP 的事务型业务,Tianmu 引擎处理 OLAP 的分析型业务。因此,需要在主从复制环境的基础上做读写分离,所有的写操作和部分读操作

    2023-06-09
    131
  • python的数据读录(python数据的读取)

    python的数据读录(python数据的读取) 准备工作: mysql库的安装。

    2023-10-27
    132

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注