MSSQLのAUTOGROWTH 2011年12月22日

cai dat SQL Server 2000 - step 2

2011-12-14 20:38:44.55 spid91 Autogrow of file ‘XXXX_Data’ in database ‘XXXX’ cancelled or timed out after 30578 ms. Use ALTER DATABASE to set a smaller FILEGROWTH or to set a new size.

ちょっと仕事での話。

先週はMSのSQL Serverでこのエラーに悩まされた。お客さんからアプリケーションの特定の機能でDB接続のタイムアウトエラーが出ると連絡があって、DBサーバのイベントログとSQLのエラーログファイルを確認したところこのエラーがバコバコ吐き出されてた。あ、ちなみにMSSQL2000(v.8)です。

そしてこの解決法に関して日本語で説明しているサイトがほとんどなかったから一応ここに書いておく事にします。もしかしたらちゃんとしたDB使いの人には常識なんかもしれないけども。。

まず、AUTOGROWTHというのが何かというと、データベースやトランザクションログのデータが格納されている実ファイルがありますが、それの容量一杯まで実際にデータが書き込まれてもう書き込む場所がありません、というような状態にまでなったとき、このAUTOGROWTHという機能でMSSQLは自動的にデータベースファイルのサイズを拡張します。これは、Enterprise Managerの左のメニューの”Microsoft SQL Servers” – “SQL Server Group” – – Databases – <使用しているDB名>まで辿り、そのDB名のところで右クリック、プロパティを選択。このプロパティのData Files、Transaction Logのそれぞれのタブで設定できるようになっている。

標準ではAutomatically grow fileにチェックが入り、File growthはBy percentで10%になっているはず。Maximum file sizeはUnrestricted file growth。このMaximum〜はデータベースファイルがサイズ拡張する上限を決める値で、HDDの空き容量が少ない際にDBで使用されるディスク容量を明確に指定したい場合はRestrictで具体的にサイズ指定すればよい模様。 Continue reading “MSSQLのAUTOGROWTH 2011年12月22日”