Access データベース内のデータやオブジェクトを削除したり、Access プロジェクト内のオブジェクトを削除したりすると、Access データベースまたは Access プロジェクトが断片化し、ディスク領域の使用効率が低下することがあります。 Access データベースまたは Access プロジェクトを圧縮すると、実際にはファイルがコピーされ、ディスク上でのファイルの保存方法が再編成されます。圧縮により、Access データベースと Access プロジェクトの両方のパフォーマンスが最適化されます。
そこで、増大し続けるデータベースのせいで ASP プログラムが耐えられないほど遅いことがわかったとき、それを圧縮することを考えました。ただし、従来のアプローチでは、ファイルをローカルにダウンロードし、MSaccess を使用して圧縮操作を完了してからアップロードします。
このプログラムは実際には FSO 権限を通じて JET エンジンに接続されていることに注意してください。そのため、使用する前に、サーバーが FSO (ファイルシステム オブジェクト) 権限をサポートしていることを確認し、最新の ACCESS ドライバーをインストールしてください。安全上の理由から、圧縮する前に元のデータベースをバックアップしてください。テストに合格した実行環境:
WIN98SE+PWS、WIN2000+IIS5.0
以下は、私がコンパイルしたソース コードをコピーして、compact.asp として保存し、通常使用するデータベースが存在するディレクトリにアップロードします。
<html>
<頭>
<title>ACCESS データベース圧縮プログラム</title>
</head>
<body bgcolor="e0f8ef">
<div>
<div align="center"><font color="#3300FF">
<b><font size="5">Universal ACCESS データベース オンライン圧縮プログラム</font></b></font><br>
</div>
<div><br>
このプログラムは実際には、FSO 権限を通じて JET エンジンに接続されています。
したがって、使用する前にサーバーが FSO をサポートしていることを確認してください。
(filesystemobject) 権限を取得し、最新の ACCESS ドライバーをインストールしてください。
安全上の理由から、圧縮する前に元のデータベースをバックアップしてください。 </div><br>
<div align="center">動作環境:WIN98SE+PWS、WIN2000+IIS5.0<br>
<%
定数 JET_3X = 4
関数 CompactDB(dbPath, boolIs97)
Dim fso、エンジン、strDBPath
strDBPath = left(dbPath,instrrev(DBPath,""))
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(dbPath) then
Set Engine = CreateObject("JRO.JetEngine")
boolIs97 = "True" の場合
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;データ ソース=" & dbpath, _
"Provider=Microsoft.Jet.OLEDB.4.0;データ ソース=" & strDBPath & "temp.mdb;" _
& "Jet OLEDB:エンジンタイプ=" & JET_3X
それ以外
Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;データ ソース=" & dbpath, _
"Provider=Microsoft.Jet.OLEDB.4.0;データ ソース=" & strDBPath & "temp.mdb"
終了の場合
fso.CopyFile strDBPath & "temp.mdb",dbpath
fso.DeleteFile(strDBPath & "temp.mdb")
fso = 何も設定しない
エンジン = 何も設定しない
CompactDB = "データベース " & dbpath & " は圧縮されています" & vbCrLf
それ以外
CompactDB = "入力したデータベースのパスまたは名前が見つかりませんでした。もう一度試してください。" & vbCrLf
End If
終了関数
%>
</div>
</div>
<form name="compact" method="post" action="compact.asp">
<div align="center">
<font size="2"><b><font color="#FF0000">
圧縮オプションは慎重に入力してください。 </font></b><br>
<br>
データベースの完全な名前を入力します。
<input type="text" name="dbpath">
(MDB、ASA、ASP などの拡張機能を含む)<br>
<br>
<input type="checkbox" name="boolIs97" value="True">
ACCESS97データベースかどうかを確認してください<br>
(デフォルトはACCESS2000データベースです)<br>
<br>
<input type="submit" name="submit" value="圧縮の確認">
</font></div>
</form>
<div align="center"><font size="2">
<%
Dim dbpath、boolIs97
dbpath = request("dbpath")
boolIs97 = request("boolIs97")
If dbpath <> "" then
dbpath = サーバー.マップパス(dbpath)
response.write(CompactDB(dbpath,boolIs97))
終了の場合
%>
<br>
</font></div></body></html>