DBサーバーとしてのみの機能だけ持たせているのなら、「SQL Server が使ったメモリを解放しない」事象は問題にならないのかもしれない。しかし、開発機であったり、社内運用しているものであったり、本番機でもアプリケーションサーバーと混在している、といったケースは多いだろう。
「SQL Server は使ったメモリを解放しないため、解放するにはSQL Serverの再起動が必要」というのが通説らしいが、稼働中に再起動はなかなか行えないことになる。

その解決策として、まずはメモリの使用量を制限しておくことが挙げられる。
SQL Server Management Studio を起動し、該当インスタンスを右クリックして[プロパティ]を選択する。


$VBA (マクロ) 作法/コーディング規約 集約中 ~ メタボなコードにサヨナラしよう


現れたダイアログの[ページの選択]から[メモリ]をクリックし、[最大サーバー メモリ(MB)]の値を調整のうえ、[OK]をクリックする。

$VBA (マクロ) 作法/コーディング規約 集約中 ~ メタボなコードにサヨナラしよう


デフォルト値ではこの[最大サーバー メモリ(MB)]の値はSQL Server が認識できる最大値が入っているらしい。この動作はSQL Server 稼働中にでも実行できる。
SQL Server がメモリを大量に消費している場合、[最大サーバー メモリ(MB)]の値に、例えば256と入力し[OK]をクリックすれば、タスクマネージャーでメモリの使用量で「メモリの使用量がガクンと落ちる」というのが見て頂けるだろう。
そのあと2048とか4096とかに変更してもその場でメモリを確保するわけではないので晴れてメモリの解放ができる、ということになる。


しかし、運用をしていくという意味ではこの画面をわざわざ起動して人力で実施、はあまり現実的ではないだろう。SQL Server 2008R2 で調べてみたところ、[最大サーバー メモリ(MB)]の値はストアードプロシージャで変更できる。
調べるといっても、トレースを取っただけであるが・・。

ストアードプロシージャは次の通り。


---- 1. メモリを小さく取る
EXEC sys.sp_configure 'show advanced options', '1' RECONFIGURE WITH OVERRIDE
go
EXEC sys.sp_configure 'max server memory (MB)', '512'
go
RECONFIGURE WITH OVERRIDE
go
EXEC sys.sp_configure 'show advanced options', '0' RECONFIGURE WITH OVERRIDE


---- 2. メモリを元のサイズに戻す
EXEC sys.sp_configure 'show advanced options', '1' RECONFIGURE WITH OVERRIDE
go
EXEC sys.sp_configure 'max server memory (MB)', '[元の値]'
go
RECONFIGURE WITH OVERRIDE
go
EXEC sys.sp_configure 'show advanced options', '0' RECONFIGURE WITH OVERRIDE


上記の 512 の値が[最大サーバー メモリ(MB)]の指定値なので、いったん小さい値にしたものを実行し、そのあと元の値にして実行、とすればメモリの解放が行える。

注意点としては
・言うまでもないが、[元の値] は環境に応じて値を設定すること。例えば 4096 等。
・上記を連続で実行した場合、思った通りに解放されない場合があった。1.を実行し、少し(2~3秒程度)間を開けてから 2.を実行する方が確実である。
・上記、いったん小さくする値を、確か 256 にしたところと SQL Server の動作がおかしくなったことがあった。他の環境ではうまくいったりもするので環境によるようだ。512くらいが無難かも。

自動実行するなり、というテクニックは応用なので試されて欲しい。


 私の仕事のスタイルとして、「顧客の満足」を求める傾向にある。とはいえ、無茶な要求や、時間の掛かるモノはきっちり折衝する、というのが基本ではある。

 過去には自分の未熟さゆえ、外部との折衝ができなかったり、内部に対してそもそもそのくらいはできて当たり前だと思って伝達していなかったということはあった。それは「みんな自分と同じ気持ち/思いだろう」という間違った感覚に支配されていたからに他ならない。

 思いはいろいろ交錯するが、恥ずかしながら自分より年少の方に薦めて頂いた書籍に触れた。以下、その書籍である。

人を動かす 新装版/デール カーネギー

¥1,575
Amazon.co.jp

 色々な悩みを持ちながらビジネス書を読んできた者からすれば、これまで読んできた書籍に書いてあるものの根本が概ねこの書籍に依るんだろうな、ということは察しがついた。つまりは「本を書くような人は、この書籍を読み、それを自分なりに消化して、より分かりやすい表現にしたり、発展させようとしようとしている」感がとても伝わってくる。

 人を使う立場になれば、と思っている諸兄。早めに読むことを薦めます。これはIT業界に限った事じゃないですよ。
ブラウザから印刷しようとしてみた。
普段使っているOperaでは、プレビュー通りに印刷されす、文章が切れてしまうので使い物にならない。
続いてchoromeで試したが、プレビュー画面の設定はいい感じ。しかし、プレビューの内容がダメで、一番印刷したい部分の文章が横書きなのに縦書きで表示されていて、文章が途中で切れてしまっている。これも使い物にならない。
IEで同様のことをやってみたら、すんなりイメージ通りに印刷できた。Microsoftはさすがにそのあたりは強いようだ。