FC2ブログ
sql2005 でメモリ不足
あるストアドプロシージャでエラーが発生した。発生したエラーは、

リンク サーバー "linkserver" の OLE DB プロバイダ "MSDASQL" に対するクエリ "
select * from openquery( linkserver, ' --- クエリが続く
を実行できません。

といった感じ。

で、ストアド内部でリンクサーバーを使っているわけだ。エラーの発生したタイミングで、問題箇所のリンクサーバー部分のクエリを実行してみたところ次のエラーが返ってきた。

 リンク サーバー "????" の OLE DB プロバイダ "MSDASQL" から、メッセージ "[MySQL][ODBC 3.51 Driver][mysqld-5.1.30]MySQL client ran out of memory" が返されました。

sqlserver の仮想メモリの使用量を見ると、1.75GBほど使われていた。これってアプリケーションが使用できる仮想メモリの限界なんだよね。0.25GB使われてないのは、sqlserver 起動時のデフォルトパラメータの -g256 のため。
-g コマンドは、sqlserver の管轄外(例えば、リンクサーバーやDLL)が使用する仮想メモリの分くらいは空けときましょうというためにあるコマンドだね。

1.75GBも使われてちゃメモリ不足だといわれても不思議じゃない。ってことで、起動時のコマンドに -g512 を追加して再起動してみようと思う。これで問題が解決すればいいのだけど…

なんでこんなにメモリを馬鹿食いしてるのかも不思議だけど、どっかに接続を閉じてないコードがあるんだろうなぁ。やれやれだぜ('A`)y~~~

※起動パラメータの一覧はこちら
http://msdn.microsoft.com/ja-jp/library/ms190737.aspx

※/3GBスイッチもいいんじゃないかと思ったけどやめた
http://www.lowtech-city.selfip.org/blog/index.php?e=52
スポンサーサイト
TOP
プロフィール

hssamurai

Author:hssamurai
FC2ブログへようこそ!

最新記事
最新コメント

最新トラックバック

月別アーカイブ
カテゴリ