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

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

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

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


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

教訓:メモリ解放はあまり使われていないときにやった方が良さそうである。