質問: sqlserver6.5 古くて恐縮ですが、sqlserver6.5で、困っています。 (osはnt4.0(virtualserver内です) sqlを使用しているソフトはacms/ntです) イベントビューアのmsgに「warning::open objectsパラメータの値が小さすぎる 可能性があります」(localdes()の記述子を解放しようとした:パラメータ値を増やすためsp_configureを実行して・・・と続く) とイベントビューアに約40分間隔で出力されます。 sqlserverの環境設定のopen objects(デフォルト500)を5000にしても10000にしても再起動後、3、4時間だけ出力されなくなるが、その後また40分間隔で出力されます。 どうしたら、このエラーmsgが出なくできるのでしょうか? (関係ないかもしれませんがtempdbを2gbに拡張しました。) 些細なヒントでもかまいません。 宜しくお願い致します。
回答: 使用中のdbはテーブル、ビュー等が沢山あるのでしょうか? 参照した物に1つを割り当てるようですので 現在参照している数を管理しているみたいですね 使用中objectの管理領域のようですのでメッセージ自身に問題はなさそうです。 select * from tbl_a を実行すると tbl_aの使用者数を+1する 初めての使用なら新規に管理テーブルを作る 使用がすめば-1する でまた別な時にtbl_aが利用されれば+1する このように使用中の管理をしているようです 次にtbl_bを使うと同様にtbl_bの使用者数+1 無ければ管理テーブルを追加 新たなものを使うと新規で作成されますから この最大数を規定しているのが該当パラメータのようです しかしながらこの数を使い切った時に新たにtbl_cを参照すると 追加できませんので現在、利用者数0の管理領域を使いまわしする訳ですね この回数が1000回単位に該当メッセージが出力されるようです。 考えると、最大数はテーブル数+ビュー数+トリガー数・・・ なのでしょうかね でも管理領域を必要としますからメモリーは必要になると思いますので何処で折り合いを付けるかですね もしかするとtempは毎回新規なのかなぁ? となるとtempを沢山使うと必ず起こるにかなぁ? であるならば、tempを多用する仕組みでは必ず発生?なのかも tempをやめて通常のテーブル化すると出る量は減る?かも