怎么解决ACCESS数据库太大造成运行慢的问题

怎么解决ACCESS数据库太大造成运行慢的问题,第1张

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

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

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

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

5执行以下这几句代码就可以了。

首先引用C:\Program Files\Common Files\System\ado\msadoxdll,该DLL包含ADOX命名空间; 

接着引用C:\Program Files\Common Files\System\ado\msjrodll,该DLL包含JRO命名空间 

注意:如,导入dll不成功,手动把com组件 导入为 net组件,在用vsnet工具导入

///压缩修复ACCESS数据库,mdbPath为数据库绝对路径

        public void Compact(string mdbPath)

        {

            if (!FileExists(mdbPath)) //检查数据库是否已存在

            {

                throw new Exception("目标数据库不存在,无法压缩");

            }

            //声明临时数据库的名称

            string temp = DateTimeNowYearToString();

            temp += DateTimeNowMonthToString();

            temp += DateTimeNowDayToString();

            temp += DateTimeNowHourToString();

            temp += DateTimeNowMinuteToString();

            temp += DateTimeNowSecondToString() + "bak";

            temp = mdbPathSubstring(0, mdbPathLastIndexOf("\\") + 1) + temp;

            //定义临时数据库的连接字符串

            string temp2 = "Provider=MicrosoftJetOLEDB40;Data Source=" + temp;

            //定义目标数据库的连接字符串

            string mdbPath2 = "Provider=MicrosoftJetOLEDB40;Data Source=" + mdbPath + ";Jet OLEDB:Database Password=l1epc2";

            //创建一个JetEngineClass对象的实例

            JetEngineClass jt = new JetEngineClass();

            //使用JetEngineClass对象的CompactDatabase方法压缩修复数据库

            jtCompactDatabase(mdbPath2, temp2);

            //拷贝临时数据库到目标数据库(覆盖)

            FileCopy(temp, mdbPath, true);

            //最后删除临时数据库

            FileDelete(temp);

        }

因为数据库文件量很大,卡巴设置里有一项是智能监控,当文件生成或是修改(访问)时会对它们进行扫描,这样对于大量文件来讲会导致死机如果确定所运行的文件没有病毒,可以在打开前暂时将卡巴的这一设置禁用,完成后再将其打开

access是数据库文件程序,win7是可以使用。

解决办法:

1、access数据库文件的打开需要安装office办公套件里面的acess程序。

2、安装独立版本的acess数据库。

3、注意查看数据库的后缀名,acess数据库文件后缀为mdb文件。

MicrosoftOfficeAccess(前名MicrosoftAccess)是由微软发布的关系数据库管理系统。它结合了MicrosoftJetDatabaseEngine和图形用户界面两项特点,是MicrosoftOffice的系统程序之一。Access能够访问Access/Jet、MicrosoftSQLServer、Oracle,或者任何ODBC兼容数据库内的数据。

熟练的软件设计师和数据分析师利用它来开发应用软件,而一些不熟练的程序员和非程序员的高级用户则能使用它来开发简单的应用软件。虽然它支持部分面向对象技术,但是未能成为一种完整的面向对象开发工具。其实Access也是微软公司另一个通信程序的名字,想与ProComm以及其他类似程序来竞争。可是事后微软证实这是个失败计划,并且将它中止。数年后他们把名字重命名于此数据库软件。目前最新的Access版本是MicrosoftAccess2013forWindows。

MicrosoftAccess在很多地方得到广泛使用,例如小型企业,大公司的部门,和喜爱编程的开发人员专门利用它来制作处理数据的桌面系统。它也常被用来开发简单的WEB应用程序.这些应用程序都利用ASP技术在InternetInformationServices运行.比较复杂的WEB应用程序则使用PHP/MySQL或者ASP/MicrosoftSQLServer.

它的使用方便程度和强大的设计工具为初级程序员提供许多功能。不过,这种便于使用可能使人误解。这类开发者都是没有在应用或者数据设计方面训练的办公室从业人员。因此许多人以为这样的开发者能够创造可用的系统,但也有很多人认为工具本身的局限性产生了这样的误导。

ACCESS数据库的体积是有限制的,单个ACCESS数据库文件的SIZE最大限制是2G。对于一般单机用户来说,如果不存储、音乐等数据文件,它足够您存储n多年的数据了。

ACCESS一般来说几百M不在话下,设计良好的数据库存储几百甚至上千万行数据也可以飞快地运行,但是设计不佳的数据库可能存储几千行数据就跑不太动的情况也会发生。当然您电脑配置的高低也对运行是否顺畅有重要影响。不过请注意,ACCESS数据库的最大问题是稳定性不太好,容易崩溃,对于前台和后台都在一起的数据库应用系统更是如此。如果您的数据非常重要,强烈建议建议将前台应用程序和后台数据库分开。根据我们多年使用ACCESS数据库的经验来看,前台与后台分开的ACCESS数据库应用系统因为崩溃而导致数据丢失的情况绝少发生,而两者合在一起的因系统崩溃而导致数据丢失则是大概率事件!

良好设计是数据库顺畅运行的前提,这对所有数据库都适用,否则即使是ORACLE、MSSQL这些大型数据库系统也一样跑不动

以上就是关于怎么解决ACCESS数据库太大造成运行慢的问题全部的内容,包括:怎么解决ACCESS数据库太大造成运行慢的问题、打开运行微软办公软件ACCESS的数据库文件时,卡巴斯基自动运行,CPU占用90%-100%,电脑严重死机,、为什么Win7里面数据库access不能用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9542035.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存