none
ビューの情報の取得 RRS feed

  • 質問

  • お世話になります。

    ビューに対する更新のストアドを一括して作成・更新するために
    ビューに含まれるテーブルとフィールドの情報をテーブル形式で取得しようとしています。

    ビュー名を指定して"INFORMATION_SCHEMA.VIEW_COLUMN_USAGE"を使用すると
    ビューの元になるテーブルとフィールド名が確認できます。

    また、ビュー名を指定して"INFORMATION_SCHEMA.COLUMNS"を使用するとビューに含まれるフィールド名とデータ型の情報が取得できます。

    ただし、"INFORMATION_SCHEMA.COLUMNS"のフィールド名は、ビューで別名が設定されているとそちらが優先されるため、
    "INFORMATION_SCHEMA.VIEW_COLUMN_USAGE"と結合ができません。

    何か別のスキーマ情報等を使って上記の情報が取得可能でしょうか?

    以上、アドバイスをお願いいたします。
    2016年5月18日 8:03

回答

すべての返信

  • 以下は参考になりませんでしょうか?

    Find the real column name of an alias used in a view?
    http://stackoverflow.com/questions/10048056/find-the-real-column-name-of-an-alias-used-in-a-view


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク Watanabe NS 2016年6月25日 3:22
    2016年5月19日 0:11
  • 返信が遅くなってすみませんでした。

    参考のリンクを検証してみました。

    シンプルなクエリの式を検証したところ
    sys.columns の column_id と sys.sql_dependencies の referenced_minor_id は 関連がないのに
    JOINして情報を取得しているため、間違った結果となることが分かりました。

    結局、最後の回答にあるように ビューを表すSQL分を解析しないとできなそうです。

    INFORMATION_SCHEMA.VIEWS の VIEW_DEFINITION から SQL分を取得できることはわかりましたので、
    .NET へ 読み込んで解析をして更新用のストアドも.NETから作成するようにしたいと思います。

    ありがとうございました。

    2016年5月28日 8:41