CRUD ストアド プロシージャをコード生成するときに、基になっているテーブルを示す拡張プロパティを追加します。sys.extended_properties
特定のテーブルに依存するprocのリストを取得するために問い合わせできるようにしたいのですが、またはextended_properties
のobject_idと同じではないように見えるmajor_idを保持しています。 sys.objects
sys.sysobjects
必要なマジック ジョインとは何ですか?
CRUD ストアド プロシージャをコード生成するときに、基になっているテーブルを示す拡張プロパティを追加します。sys.extended_properties
特定のテーブルに依存するprocのリストを取得するために問い合わせできるようにしたいのですが、またはextended_properties
のobject_idと同じではないように見えるmajor_idを保持しています。 sys.objects
sys.sysobjects
必要なマジック ジョインとは何ですか?
sys.extended_propertiesのMSDNには、major_idとminor_idの両方が記述されています。コンテキストはクラス列によって異なります。
意味がある場合は、 sys.objectsのmajor_id=object_idになります。
以前にこれを使用して拡張プロパティをテストしたことがあるので、機能することがわかります。
ただし、質問を2回目に読むと、ストアドプロシージャの拡張プロパティと、プロシージャで使用されるテーブルとの間に直接のリンクはありません。私があなたを正しく理解していれば、接続するにはsys.sql_expression_dependenciesを経由する必要があります
MSDNから、class
フィールドだけでなくを調べる必要がありますmajor_id
。
クラスが0の場合、major_idは常に0です。
クラスが1、2、または7の場合、major_idはobject_idです。
他のクラスは文書化されていないようで、そのため私はそれらに依存しません。たとえば、クラス5はCLRアセンブリ(SqlAssemblyProjectRoot)用のようです。私の場合、そのようなアセンブリの1つは65673であり、そのIDmajor_id
に不一致のオブジェクトすらありません。sys.objects
編集:文書化されたもの(1、2、7)が(1)オブジェクト(テーブル、ストアドプロシージャなど)または列、(2)パラメータ、(7)インデックスに対応することを追加したいと思います。あなたの場合、それはあなたが探しているものをカバーするべきです。
sys.extended_propertiesの書籍のオンラインエントリから、クラス= 1、2、または7の場合、major_id = object_id。手動クエリを実行する場合、プロパティのクラスは何ですか。私の推測では、次のように機能します。
select object_name([major_id]), [name], [value]
from sys.extended_properties
あなたの質問に直接答えるわけではありませんが、いくつかの追加リソース:
ドキュメントなどに組み込みの拡張プロパティを使用する方法についてのプレゼンテーションがあります: http://code.google.com/p/caderoux/wiki/LeversAndTurtles
また、Adam Aspin による拡張プロパティに関する最近の一連の記事が SQLServer Central で公開されています。
http://www.sqlservercentral.com/articles/Metadata/72607/
http://www.sqlservercentral.com/articles/Metadata/72608/