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 )のインストールに失敗した場合の対処法
ディレクトリの削除もやらんといかん