SQLServerネタ


バッチを流して帰宅し翌日結果をみると、
エラーが発生していた。バッチ結果から全て計算処理が
済んでいるにも関わらずエラーになっていた。
原因を追究するべく調査を行ったところ、
イベントビューアで以下のエラーが発生していた。

                                                                                                  • -

日付   :2004/03/18
時刻   :02:38
ソース  :MSSQLSERVER
種類   :エラー
イベントID:17052

エラー : 1101、レベル : 17、状態 : 10
データベース 'TEMPDB' の新しいページを
割り当てられません。
ファイル グループ DEFAULT で使用できるページは
ありません。
オブジェクトの削除、別のファイルの追加、
またはファイル拡張の許可のいずれかを
実行して領域を作成してください。

                                                                                                  • -

日付   :2004/03/18
時刻   :02:38
ソース  :MSSQLSERVER
種類   :エラー
イベントID:17055

17053 :
C:\Program Files\Microsoft SQL Server\MSSQL\
data\tempdb.mdf:
オペレーティング システム エラー 112
(ディスクに十分な空き領域がありません。)
が発生しました。

                                                                                                  • -

だが、[tempdb.mdf]は8.1Mである。Cドライブの
空き容量も800MBほどある。

さらに調査を進めるとどうやらバッチ中の
CREATE DATABASEでFILENAMEを指定していないため、
C:\Program Files\Microsoft SQL Server\MSSQL\Data
に作成され、そのままバッチを進めたため、
おそらくCOMMITした時点で落ちたと思われる。

回避策として以下の3つを調査した。
1.CREATE DATABASEでの作成デフォルトパスを変更
2.バッチでCREATE DATABASE時のFILENAMEを指定
3.Cドライブをめっちゃ増やす

2はパッケージな為、あまり手を入れたくない。
3で4GBまで空きを増やした。
(というかマメに手入れしとけよっ)
できれば1も調査して変更したい...
M$サポを見たけどそれっぽいのもない。
レジストリも検索したがそれっぽいのもない。
ふと、SQLServerEnterpriseManagerで
指定できるのを��(・∀・) ハケーン !!

1.[SQLServerMachineName]のプロパティ
2.[データベースの設定]タグ
3.新規データベースの既定の場所
 ・既定のデータディレクト
 ・既定のログディレクト

で別ドライブのデバイスファイル専用フォルダを
設定して無事に解決!?っぽぃ。