プロが教えるわが家の防犯対策術!

OracleでテーブルのNot Null制約や、カラムのバイト数、PKかどうかなどが取れるように、
SQL Server でも取れますでしょうか?

Googleにて「SQLServer、 データディクショナリ」のキーワードで検索をしてみましたが、
出てくるのはOracleばかりでした。
(SQL Serverで使う言葉がデータディクショナリという言葉ではないのかも?)

SQL Server での取得方法、もしくはGoogle検索用のワードを知りたいです。

A 回答 (5件)

以下で調査可能ですよ。



sys.objectsでテーブルのみ抽出。
※type='U'

sys.objectsとsys.columnsをJOIN
※object_idが一致

sys.typesとsys.columnsをJOINしデータ型の名称を取得
※system_type_idが一致

>Not Null制約や、
sys.columns.is_nullable

>カラムのバイト数、
文字型の場合、sys.columns.max_length

数値型(decimal)の場合、sys.columns.precisionとsys.columns.scale(少数部)

>PKかどうか
sys.indexesとsys.objectsをジョインし、索引がPKかどうか判定
sys.indexes.is_primary_key

sys.columnsとsys.index_columnsをJOINし、索引列を特定
※sys.columnsとobject_idが一致
※sys.columnsとcolumn_idが一致
PK列を判定

これらの情報から私はテーブル定義書を逆生成してますよ。
    • good
    • 0
この回答へのお礼

ありがとうございます。SQLを実行してみます!

お礼日時:2012/02/16 01:07

 SQLServerでは、お求めの情報は、「システムビュー」の一種で「カタログビュー」という用語で表現されています。


 とここまでで、後は、自分で検索していただいても良いわけですが、念のため、MSDNによる2008R2のマニュアルの該当ページのリンクを張っておきます。

 http://msdn.microsoft.com/ja-jp/library/ms174365 …
    • good
    • 0
この回答へのお礼

検索がうまくできない場合もご配慮していただきありがたいです!

お礼日時:2012/02/16 01:08
    • good
    • 0
この回答へのお礼

ありがとうございます!確認します。

お礼日時:2012/02/16 01:08

列情報はSYS.COLUMNSに有ります。


インデックス情報はSYS.INDEXESとSYS.INDEX_COLUMNSに有ります。
また、テーブル情報はSYS.OBJECTSに有ります。
    • good
    • 0
この回答へのお礼

ありがとうございます。SQLを実行してみます!

お礼日時:2012/02/16 01:07

キーワード「SQLServer 制約 確認」で検索するとかなりのWebページがヒットします。

    • good
    • 0
この回答へのお礼

ありがとうございます!調べてみます。

お礼日時:2012/02/16 01:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!