Access数据库在线压缩的实现
如果在Access数据库中删除数据或对象,或者在Access项目中删除对象,Access数据库或Access项目可能会出现碎片,磁盘空之间的使用效率会降低。压缩Access数据库或Access项目实际上是复制文件并重新组织文件在磁盘上的存储方式。压缩优化了Access数据库和Access项目的性能。
所以当数据库越来越大导致的ASP程序慢得让人无法忍受的时候,我们就想到了压缩。但是常规的方式是本地下载然后用MSaccess完成压缩操作,然后上传!后来想,能不能在线压缩ACCESS数据库。为此我查了一些资料,还是没说到点子上。
我已经在这台机器上测试成功了,我还压缩了自己的网上论坛。结果完全正常,数据库已经从原来的3.7M压缩到2.1M,证明是可行的。注意:该程序实际上是通过FSO权限连接到JET engine的,所以请确保您的服务器支持FSO(filesystemobject)权限,并在使用之前安装最新的ACCESS驱动程序!出于安全考虑,请在压缩前备份原始数据库!通过测试的运行环境:
WIN98SE+PWS,WIN2000+IIS5.0
下面是我整理好的源代码,复制保存为compact.asp,上传到数据库所在的目录就可以正常使用了。
ACCESS数据库压缩程序
Universal ACCESS数据库在线压缩程序
该程序实际上是通过FSO权限与JET engine连接的,所以请确保您的服务器支持FSO(filesystemobject)权限,并在使用之前安装最新的ACCESS驱动程序!出于安全考虑,请在压缩前备份原始数据库!
运行环境:在WIN98SE+PWS中,win 2000+IIS 5.0
const jet _ 3x = 4
Function Compact DB(DBPATH,Boolis 97)
Dimfso Engine,strDBPath
strDBPath = left(DBPATH,instrrev(DBPath," \ "))
Set FSO = CreateObject(" Scripting。文件系统对象”)
如果fso。FileExists(dbPath)然后
Set Engine = CreateObject(" JRO。JetEngine”)
如果boolIs97 = "True "则
引擎。compact database " Provider = Microsoft。Jet . OLEDB.4.0数据源=" & dbpath,_
"提供者=Microsoft。Jet . OLEDB.4.0数据源= " & strDBPath & " temp.mdb"_
& " Jet OLEDB:Engine Type = " & Jet _ 3X
Else
引擎。compact database " Provider = Microsoft。Jet . OLEDB.4.0数据源=" & dbpath,_
"提供者=Microsoft。Jet . OLEDB.4.0数据源= " & strDBPath & " temp . MDB "
End If
FSO。CopyFile strDBPath & "temp.mdb ",Dbpath
FSO . delete file(strDBPath & " temp . MDB ")
setfso = nothing
setengine = nothing
compact db = "您的数据库," & dbpath & "已压缩" & vbcrlf
else
compact db = "找不到您输入的数据库路径或名称,请重试" & vbCrLf
End If
End
% >
压缩选项,请认真填写!
输入数据库的全名:
(包括扩展名,如MDB、ASA、ASP等。)
检查是否是ACCESS97数据库
(默认为ACCESS2000数据库)
Dim dbpath,boolis 97
dbpath = request(" dbpath ")
boolis 97 = request(" boolis 97 ")
If dbpath " "然后
dbpath = server . mappath(dbpath)
response . write(compact db(dbpath,boolis 97))
End If
% >
0条评论