仕事場にAccess2010がないのだが、客先からAccess2010形式(拡張子が.accdb)のものを受理して、その中身を読み込みたかったのだが、内部のテーブル名が分からない。そのときに見つけたものがADOXだ。それまで恥ずかしながら存在を知らなかった・・。

・データベース内のテーブル一覧を作りたいな
・テーブルの項目一覧を作りたいな

という時に力を発揮する。ADOではできなかったので、それがDAOより劣る点だな、と信じていたのだが、それは私の勘違いだったということになる。


VB6でのソースはあるのだが、現在これをDelphiに移行しようとしているところ。
ブログ向けに、サンプルを用意する予定である。

この記事で書いたけれど、SQL Server のメモリ解放を行う方法。

先日、恐ろしい目に遭った。

Windows 2008 R2 (つまり64ビット)で、メモリ16G。SQL Server 自体は4Gくらいしか食っていないのだが、全体でメモリを14Gくらい食っているので「ちょっとメモリに余裕を作ろう」と実行した。
4096Mから256Mへ。で、速攻で4096Mに戻そうとしたが、エラーがでる。どうもインスタンスが壊れた模様。
一度停止させて起動してやれ、としてもダメ。

仕方なくOSリブート。で解決した。ちなみにこれ、お客さん先の環境。かなり冷や汗をかいた。


思うに、メモリの解放はかなり強制力のあるコマンドのようである。で、ガシガシ使っている環境でメモリを減らしたもんだから「書き込もうとしていた先の領域がない!」ので、データが捨てられるか無理矢理書き込まれるかして、でも中途半端(DBMSの管理外のメモリを使い出したりした)のでインスタンスが壊れたような感じになったのでは?と推測。

教訓:メモリ解放はあまり使われていないときにやった方が良さそうである。
VM上に客先環境を構築し、NASなどのネットワークドライブでデータをやりとりしているが、たまにVM側から「共有フォルダを認識しない」というケースがある。

どういうときかというと、新しいフォルダを作成した場合。エクスプローラーで更新をかけてもダメ。直接パスを打ち込んでもダメ。

この場合、たいてい「何らかの理由でメモリを食いすぎている」ことが多いらしい。解消方法としては
・ネットワークドライブを一度切断し、再接続する。
・OSの再起動を実施する。
のいずれかである。

前者は意外と知られていないようだが、DOSコマンドで
net use /delete *
と入力し、Enter を押せば一覧が出る。切断したいネットワークを * の代わりに設定してやればよい。