none
SQL Server各バージョンのExpressEditionについて、データベース最大容量を確認する方法 RRS feed

  • 質問

  • SQL Server2005からExpressEditionがあります。

    ExpressEditionにはいくつか制約・制限事項がありますが、

    その中の1つに、単一データベースファイルの最大値というものがあり、

    2005では4GBで、2008以降は10GBとなっております。

    ※それらの情報は下記にあることを確認しました。

    http://msdn.microsoft.com/ja-jp/library/cc645993(v=SQL.110).aspx

    http://msdn.microsoft.com/ja-jp/library/cc645993(v=sql.105).aspx

    本題です。

    上記のExpressEditionでの「データベースファイルの最大値」を、SQLやDDBCやローカルの設定ファイルなどから取得する方法はありますでしょうか?

    Editionを調べて、それに対応する値(2005なら4GB、2008以降なら10GBなど)を設定するということはできたのですが、

    今後新しいバージョンが増えた時に、そこの容量制限が変更になった場合も考えて、SQLServerから直接その値を取得したいと考えています。

    (もちろん、取得の仕方も変更になる可能性があるので、完璧ではないことは理解した上です。)

    SQLServerから、ExpressEdition時の「データベースファイルの最大値」を取得する方法をご存知の方がいらっしゃいましたら是非ご教授ください。

    逆に、絶対できませんという情報があればお教え頂けますと幸いです。

    2012年7月25日 10:01

回答

すべての返信

  • その上限をプログラムから取得できたとして、何の用途に使うのでしょうか?

    Microsoft社としては上位のエディションを用意しているわけですから、上限に引っかかる・引っかかりそうなら上位エディションを購入してほしいはずです。

    それはそうと、Express Editionに関する記述は「データベースの最大サイズ」です。書かれているように「データベースファイルの最大サイズ」ならばデータベースごとに複数のデータベースファイルが持てるため、データベースファイルを複数に分割すれば…とか良からぬことも思い付きますが、前述の通りですので詳しく調べる気が起きません。

    2012年7月26日 6:34
  • 佐祐理さん、ご回答ありがとうございます。

    その上限をプログラムから取得できたとして、何の用途に使うのでしょうか?

    DBの上限(4GBなり10GBなり)が近づいたことを検知して、アラートを出そうと思っている次第であります。

    Microsoft社としては上位のエディションを用意しているわけですから、上限に引っかかる・引っかかりそうなら上位エディションを購入してほしいはずです。

    金額的な問題でExpressEditionしか使えないのです・・・ orz

    それはそうと、Express Editionに関する記述は「データベースの最大サイズ」です。

    >書かれているように「データベースファイルの最大サイズ」ならばデータベースごとに複数のデータベースファイルが持てるため、

    >データベースファイルを複数に分割すれば…とか良からぬことも思い付きますが、前述の通りですので詳しく調べる気が起きません。

    これについては調べてあったのですが、データが肥大化し続けると結局どこかでエラーが起きるので、あくまで「上限値が知りたい」という所は必須になります。


    その後、色々な技術系サイトやブログなどを調べましたが、こんだけ調べてないとなると、やはり「取得する方法はない」という結論にならざるを得ないのですかね・・・

    (そもそも、そんな需要がない ということで機能的な提供がない&誰も調べてないだけな気もしますが・・・)

    2012年7月26日 9:26
  • こちらは参考になりませんか?

    Find a database size limit from within the SQL Server
    http://social.msdn.microsoft.com/Forums/nl-BE/transactsql/thread/7a44947a-9082-4ad6-a3f7-46e69d461630

    (追記)
    要するにそのような最大サイズはどこからも取得できないようです。上のスレッドの2番目の回答マークが付いている書き込みのように、最大サイズを返す仕組みを自前で用意した方が現実的のようです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/


    • 編集済み trapemiya 2012年7月27日 1:37 追記
    • 回答としてマーク takanaka 2012年7月27日 4:22
    2012年7月27日 0:44
  • trapemiyaさん

    ご回答ありがとうございます、やはりバージョン(エディション)調べての決め打ちしかなさそうですね。

    今回はその方法で妥協したいと思います、ご丁寧にありがとうございました。

    なお、自分で検証してないので正しい情報かはわかりませんが、sp_spaceusedで得られる

    unusedをチェックすることでも上限間近であることを察知できるようです。

    上限が近くなってくるとunusedの値が低下するとのことで・・・

    ただ直前までわからないようなので、アラート閾値を決められないのが難点ですが。

    2012年7月27日 4:25