• 締切済み

SQL Server 2005 Express Editionのフィールド制約

データ蓄積にSQLデータベースを使用しています。 現在はデモ版で支障はないのですが、 履歴の場合、 テーブルの列が登録毎に増えてしまうので、 その制約が気になります。 どなたか、ご存知の方がいるならば教えてください。

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

テーブルの列数(カラム数)ですか?、行数(レコード数)ですか? レコード数には基本的に制限はありません。Express Editionの場合はデータベースが4GBまで、という制約があります。 カラム数ですが、Editionに関係なく制限は1,024です。 ただし、それと同時に1行の上限が8,060バイトという制限があります。 従ってcharやintのような固定長フィールドで定義した場合、まず先にこちらの制限にかかると思います。 一方、varcharなどの可変長フィールドの場合は、1行の上限を超過したときに行オーバーフローページに書き出すことが できる仕組みになっているため、8,060バイトに含まれるのは固定2バイト+行オーバーフローページへのポインタ24バイトの 計26バイトになります。別途必要な内部オーバーヘッドも考慮すると可変長のみでの最大フィールド数は307になるようです。 なお、テーブル列を追加する場合、再作成しないでALTERした場合、ALTER前の長さも上記制約上カウントされてしまうはずです。 参考になれば幸いです。

wat1976
質問者

お礼

ご丁寧な回答ありがとうございました。 テーブルの列数(カラム数)の制限が気になっていましたので、 すっきりしました。 それと、ほかに考慮すべきところも論理だてて指摘頂き、 真にありがとうございました。

関連するQ&A