MSDE2000で「プライマリデバイスの容量がどうこうで書き込みできない」みたいなエラーが出た。
DBデバイスの容量を確認すると2GBいっぱいいっぱいになっている。
「はっはーん。MSDEの2GB制限まで使い切ったか」←そのまま表現するおぎやはぎ流無駄ボケ
サーバのエラーメールなんかを巡回受信するアプリを2年間稼動しているので、相当のレコード数になっているはずである。2GBを使い切るってのは結構大変だと思っていたが、メールを数十万件受信するとこうなるらしい。
さて、どうすべか
「MSDE2000は2GBバイトまでです。それ以上はSQLサーバにアップグレードしてください」の下馬評通り、SQLサーバを購入するのか?
バックアップを取ったら、以前のデータをばっさばさ消すか。
それとも、これ以外の方法があるのか?
■チェック&圧縮(最適化) →成功
use DB名
DBCC CHECKDB
DBCC SHRINKDATABASE(DB名)
※最適化は、不要レコードを削除してからでないと実行されない
■デバイスの追加
コマンドプロンプトで動作するSQLクライアント”osql”を使用する。
> osql -S サーバIPアドレス\インスタンス名 -U sa
1>USE master
2>GO
1>ALTER DATABASE DB名
2>ADD FILE
3>(
4>NAME=DBデバイス論理名,
5>FILENAME='物理ファイルの配置先\DBデバイス名.mdf',
6>SIZE=初期DBサイズ(MB),
7>MAXSIZE=2048MB,
8>FILEGROWTH=10MB,
9>)
10>GO
ディスク’DBデバイス論理名'で10.0MB単位でデータベースを拡張しています。※
MSDEでデバイス拡張が出来るということは、無制限に使えてしまうということではなかろうか?
「プライマリデバイスがいっぱいでどうこう・・・」とエラーが出たことが、今回のスタート地点であったが、プライマリデバイスがいっぱいの時、自動的に他デバイスに切り替わってくれるのなら、必要分のデバイスを予め用意しておけば良いということになる。ホントか?”データベースあたり2GBの制限”であるので、物理デバイスが2GB以上に拡張できても、論理DBで2GBの制限が掛かっているのなら、ALTER DATABASEで追加しても無意味!かもしれない。(実証実験をしていません)
もしかして、SQLサーバは、上記の拡張で32個分=64GBを実現しているのかなぁ。■デバイスの削除
USE master
GO
ALTER DATABASE DB名
REMOVE FILE DBデバイス論理名
GO
■リファレンスサイト
RDB MSDE2000のインストール
TechScrawl SQL Server ノート