压缩和修复mdb数据库的方法

再给大家介绍3种 压缩和修复数据库 的方法


方法 1:

使用 DAO 物件 ( Data Access Object )

設定引用項目 Microsoft DAO x.x Object Library

目前 DAO 物件有 3.51 版的 Microsoft DAO 3.5 Object Library ( For Access 97 以前的 MDB )
及 3.6 版 Microsoft DAO 3.6 Object Library  ( For Access 2K 以後的 MDB )

不設定引用 ( Early Binding ) 也可使用 Late Binding 方式來建立 DAO 3.5 或 3.6 版本的 DBEngine
Set dbe = CreateObject("DAO.DBEngine.35") ' 或 Set dbe = CreateObject("DAO.DBEngine.36")

Compact 壓縮 ( Defragmentation ) 資料庫 動作如下 :

語法 :

DBEngine.CompactDatabase OldDb, NewDb, Locale, Options, Password

   OldDb   :   欲處理之來源 MDB

   NewDb   :   為處理後之目的 MDB

   Locale 參數 :
       dbLangGeneral   :   English, German, French, Portuguese, Italian, and Modern Spanish
       dbLangChineseSimplified   :   Simplified Chinese ( 繁體中文 )
       dbLangChineseTraditional   :   Traditional Chinese ( 簡體中文 )

   Options 參數 :
       dbVersion10   :   M$ Jet db engine ver 1.0 file format while compacting.
       dbVersion11   :   M$ Jet db engine ver 1.1 file format while compacting.
       dbVersion20   :   M$ Jet db engine ver 2.0 file format while compacting.
       dbVersion30   :   M$ Jet db engine ver 3.0 file format (compatible with ver 3.5) while compacting.

       dbEncrypt   :   Encrypt the database while compacting.
       dbDecrypt   :   Decrypt the database while compacting

   PS : Jet ( Joint Engine Technology )

Sample :

DBEngine.CompactDatabase "C:/Src.mdb", "C:/Dst.mdb", _
         dbLangChineseTraditional, dbVersion40 + dbEncrypt

PS : dbVersion40 請調整成適當的版本

By the way , DAO  3.5 有提供 MDB 修復 ( Repair ) 的方法 :
DBEngine.RepairDatabase "MDB 路徑 + 檔名"  

PS : 3.5 以後之版本已無此方法 ( 已併入 CompactDatabase ) 

 

 

================================================================

 


方法 2: 

使用 JRO 物件

設定引用項目 Microsoft Jet and Replication Objects X.X library 

語法 :

JetEngine.CompactDatabase(SourceConnection, DestConnection)

參數 :

SourceConnection  :   String 值,指定與欲壓縮之來源資料庫的連接。
       若 SourceConnection 指定的資料庫已經開啟,就會發生錯誤。

DestConnection  :   String 值,指定與壓縮後才建立之目的地資料庫的連接。
       若 DestConnection 指定的資料庫已經存在或已經有相同名稱的其它檔案存在,就會發生錯誤。

Connection String :
 

屬性
說明

Provider 


指示提供者的名稱,用來連接到資料來源。
若未指定此屬性,會採用 Microsoft.Jet.OLEDB.4.0 提供者。
若來源字串的提供者名稱和目的地字串的提供者名稱不同,就會發生錯誤。

Data Source
指示資料庫的名稱。
來源和目的地連接資訊都需要此屬性。

User Id
若來源資料庫設有安全保護時,指示使用者的名稱。

Password
若來源資料庫設有安全保護時,指示使用者的密碼。

Locale Identifier
指示新資料庫的國別 id。
若省略此 id,則目的地資料庫的國別 id 會和來源資料庫相同。
國別指定資料庫字串比較的排列順序。

Jet OLEDB:Database Password
若資料庫設有密保護,指示密碼

Jet OLEDB:Engine Type


指示要開啟或將建立的來源資料庫版本。
您可以使用的 OLE DB 引擎類型為:
1 for JET Version 1.0
2 for JET Version 1.1
3 for JET Version 2.x
4 for JET Version 3.x
5 for JET Version 4.x
若省略目的地資料庫的此資訊,它會預設成 5。
目的地資料庫的值不可以是比來源資料庫的版本還新。

Jet OLEDB:Registry Path
設定 Windows Registry 機碼的資訊,包括 Microsoft Jet Database Engine 的值。

Jet OLEDB:System Database
指示系統資料庫的位置。

Jet OLEDB:Encrypt Database
指示是否加密新的資料庫。若此省略此參數,則新的資料庫會和來源資料庫擁有相同的加密。

Jet OLEDB:Don't Copy Locale on Compact
指示資料庫要使用的排列順序,取代任何每個資料行國別設定。(Boolean.)

Jet OLEDB:Compact Without Relationships
指示是否複製關係至新的資料庫。 (Boolean.)

Jet OLEDB:Compact Without Replica Repair
指示是否試著尋找其它抄本來修復受損複寫式資料庫。(Boolean.)

 


Sample:

Dim jro As New jro.JetEngine

jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= 來源MDB", _
                                    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= 目的MDB;Jet OLEDB:Engine Type= 4"

 


================================================================

 

 

方法 3: 


如果機器上有裝 M$ Access , 也可直接使用 Access 來 Repair / Compact MDB資料庫

 

或寫程式來呼叫 Access來做

 

建立 Access 應用程式物件

    設定引用項目 Microsoft Access X.X Object Library

    Dim objAcc As New Access.Application

    Dim objAcc As Object

    Set objAcc = CreateObject("Access.Application")

之後

    Call objAcc.CompactRepair("c:/A.mdb", "C:/B.mdb", False)

即可
================================================================

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值