VB.NETでmdbを最適化する。


Private Sub OptimizeMDB()
Dim jroEngin As JRO.JetEngine = Nothing
Const CompactPath As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0}"
Const MDB_DIR As String = "C:\hoge"
Const MDB_NAME As String = "foo.mdb"

Try
'まず、バックアップファイルを作成
Dim originalMDB As String = MDB_DIR & "\" & MDB_NAME
Dim cloneMDB As String = originalMDB & ".Backup"
System.IO.File.Copy(originalMDB, cloneMDB, True)

'圧縮条件作成
jroEngin = New JRO.JetEngine
Dim beforeCompact As String = String.Format(CompactPath, originalMDB)
Dim afterConpact As String = String.Format(CompactPath, originalMDB.Replace(MDB_NAME, "New_" & MDB_NAME))

'New_foo.mdbが存在するとエラーが出るのであるなら削除
If IO.File.Exists(originalMDB.Replace(MDB_NAME, "New_" & MDB_NAME)) Then
IO.File.Delete(originalMDB.Replace(MDB_NAME, "New_" & MDB_NAME))
End If

'圧縮 
jroEngin.CompactDatabase(beforeCompact, afterConpact)
jroEngin = Nothing

'圧縮ファイルに置き換える。
System.IO.File.Replace(originalMDB.Replace(MDB_NAME, "New_" & MDB_NAME), originalMDB, originalMDB & ".bk")
Catch ex As Exception
Throw
End Try
End Sub

こんな感じジャン。