SQL SERVER の system のテーブル

SQL SERVER には sys にメタデータが入ったテーブルがいろいろある。外部キーとかカラムとかテーブルとか。

外部キー制約の名前、どのテーブルにある外部キーか、どのテーブルを指してるか、テーブルはいつ更新されたかとかそんなのまである。

これちゃんと検索できると捗るというかむしろできないと詰む。実際詰んだ。速攻で終わるようなことにめっちゃ時間かかってしもうた。

 

いや、あーだこーだ言いたいんじゃなくて、とりあえずメモりたいんでさっさと書いてしまう。

参考にしたのは以下

さらに追記。ようやく lecture が見つかった・・・


Pluralsight Training ここの 3 の Metadata 云々の箇所。

公式の object カタログビュー

https://msdn.microsoft.com/ja-jp/library/ms189783(v=sql.100).aspx

【SQLServer】保守に便利!SQLServerでテーブル・ビュー等の情報をSQLで取得する。 | プラプラ式技術系 Access流!

SQL Server システム カタログに対するクエリに関してよく寄せられる質問

https://msdn.microsoft.com/ja-jp/library/ms345522.aspx

とりあえずカラムとテーブルとロックと外部キーがらみか、そこら辺は覚えねば。 

 

以下、ビューなどについて記載。システムテーブルは触ってはいけないそうで、ビューやストアド(訂正)ファンクションを使わないといけない。

・sys.columns の object_id は table の id が入ってる。ひょっとしたら他のテーブルもそういう物であるらしい?

 ・indexes と index columns と columns の object_id にはいずれも、テーブルの ID が入ってる。

 これらと columns を join することで、主キーを取れる。is_primary を見る。

・ foreign_key_columns の reference_object_id は外部キーが見てるテーブルの ID、refefence_column_id はカラムの ID 。

 foreign_key ビューもある。

・rock の stored もある。handler を入れると SQL が取れたりする。うろおぼえ。

 hangler は dm (hogehoge) request とか session とか connection の stored からとれる。

・テーブルだけじゃなくて COLUMN_(NAME/ID)、OBJECT(NAME/ID)、SCHEME_(NAME/ID) の関数を使うと、それぞれ ID と名前の変換ができる。

 

※ 細かい固有名詞は合ってる自信全然ない。 

 

うーぬ、単に SQL Server インストールするんでも苦労したした・・・

参照したところは以下

[ソリマチQ&A] データベースエンジン(SQL Server )のインストールに失敗した場合の対処法

ディレクトリの削除もやらんといかん

SQL Tutorial for Beginners - Free SQL Course For Beginners