俺的備忘録 〜なんかいろいろ〜
そういった意味で、MS OfficeのAccessはお手軽にデータベースを構築でき、DB初心者にも扱いやすく、リンクテーブルを使用すれば大規模システムのDBクライアントにもなるし少し工夫すれば小規模WEBシステムのDBにも出来るツールのため、使っている方も多いだろう。 そんなAccessだが、かなり厄介な制限がある。Accessのファイル形式「.mdb(Office 2007以降の場合は.accdb)」の容量上限が約2GBであるという点だ。
それは、Accessファイルの容量は「MS Office 2003」はもちろん、今後導入されることが多くなるであろう「MS Office 2010」であっても変わらない。 おそらく、ファイル拡張子が2007以降と同じ「MS Office 2013」でも変わらないだろう。過去のバージョンと互換性が失われてしまうからだ。
今どきのファイルシステムであれば、1ファイル2GB以上のデータは簡単に作れる。 ただ、過去のしがらみか(Windows 95とか98の際には、ファイルシステムにFAT16というものが使われていて、これは2GB以上のファイルが作成出来なかった。)自社のSQL Serverを入れたいためかは不明だが「.mdb(.accdb)」形式では2GB以上のデータは作れない。2GBを超えてしまうと「引数が無効です」というエラーが表示されてしまい、それ以降内部データを削除するまではデータの追加ができなくなる。
1.応急処置で「データベースの最適化/修復」を行う
- 図:Accessの容量変動イメージ
2.Accessを分割する
3.別のRDBMSシステムを使用し、クライアントとしてAccessを利用する。
といっても、わざわざDBサーバを起動させるようなやり方ではない。 RDBMSの中に「SQLite」というものがある。 このシステム、Accessと同じように1ファイルにテーブルデータ等を保持する形式となっているのだが、容量制限が32TBまでとなっている。これをリンクテーブル先にすればよいのだ。
- AccessからSQLiteのデータベースを使用する方法
- MSAccessからSQLiteを操作する
- Accessでaccdbを使わずに他のDBを使ってみる ? SQLite編1