views
を定義したシステムを変更することはできますかforeign_key
が適用された列名を提供するcolumn
を追加したいですか?システム定義のビューを変更するにはどうすればよいですか?
同様に、sys.foreign_key_columns
の変更点。
スクリプトまたはソースを教えてください。
views
を定義したシステムを変更することはできますかforeign_key
が適用された列名を提供するcolumn
を追加したいですか?システム定義のビューを変更するにはどうすればよいですか?
同様に、sys.foreign_key_columns
の変更点。
スクリプトまたはソースを教えてください。
システムビューの定義を変更することはできません。ほとんどの場合、これは当てはまりません(結局のところ、Microsoft自体がアップグレードでそれを行うことができます)が、ユーザーとして、これを行うべきではなく、それを実行するために必要なステップは(意図的に) とても難しい。システムビューの変更に成功した場合、サーバーはサポート対象外となり、将来の更新プログラムをインストールできなくなる可能性があります。基本的には、このように行かないでください。
もっと実践的なアプローチとして、自分のビューでシステムビューをラップし、代わりにそれらを使用することを検討してください。これらのビューをすべての新しいデータベースで使用できるようにするには、データベースをmodel
データベースに追加します。
外部キーが参照している列の名前も含む特定のビューの場合は、ジョブを実行するビューが1つあります(外部キーの一般的には):あなたがsys.foreign_keys
自体からのデータが必要な場合は
CREATE VIEW ext_foreign_keys AS
SELECT
OBJECT_NAME(constraint_object_id) AS foreign_key_name,
OBJECT_NAME(parent_object_id) AS parent_table_name,
COL_NAME(parent_object_id, parent_column_id) AS parent_column_name,
OBJECT_NAME(referenced_object_id) AS referenced_table_name,
COL_NAME(referenced_object_id, referenced_column_id) AS referenced_column_name
FROM sys.foreign_key_columns
、それを参加します。私はシステム機能OBJECT_NAME
とCOL_NAME
を使ってここで怠惰になっています。もしあなたが好きなら、あなたは明示的にsys.tables
とsys.columns
に参加することもできますが、これはもっとタイピングです。とにかくthere are subtle issues with locking when using these functionsなので、やりたいことがあります。
ありがとう@Jeroen。それを実現するためのあらゆる情報源を提供できますか? – Deep
@Deep:私はあなたの後にある可能性のあるビューの種類のための提案で答えを更新しました。むしろシステムビュー自体を変更するためのコード/ステップを意味するなら、私はそれを提供することができますが、私はそうしません。厳重な警告を伴っても、Stack Overflowにそのようなものを置くことは無責任なことでしょう。正当な理由でこれをしたいと思う少数の人々はまた、それ自体を理解するために必要な背景知識を持っていなければなりません(もしそうでなければ、それについて別個の質問をすることができます)。 –
@ JeroenMostertあなたは答えとして投稿する必要があります。 – alroc
@alroc:あなたは正しい、悪い習慣です。完了しました。 –
@Deep Jeroenが提供した回答を受け入れるべきです – klinger