私はSQLServer2008を使用しており、1500を超える列と約500のストアドプロシージャを含むデータベースがあります。
いくつかのリレーションがあり、多くのストアドプロシージャとビューで参照されているテーブルの名前を変更したいのですが...。
このテーブルと関係のあるデータベース内のすべてのアイテムを取得するにはどうすればよいですか?
ありがとう。
私はSQLServer2008を使用しており、1500を超える列と約500のストアドプロシージャを含むデータベースがあります。
いくつかのリレーションがあり、多くのストアドプロシージャとビューで参照されているテーブルの名前を変更したいのですが...。
このテーブルと関係のあるデータベース内のすべてのアイテムを取得するにはどうすればよいですか?
ありがとう。
使用sys.dm_sql_referencing_entities
:
SELECT
referencing_schema_name, referencing_entity_name, referencing_id,
referencing_class_desc, is_caller_dependent
FROM
sys.dm_sql_referencing_entities ('mySchemaName.myTableName', 'OBJECT');
GO
'mySchemaName.myTableName'
たとえば、schema.tableは どこにありますか'dbo.MyTable'
データベースオブジェクト(テーブル、列、トリガーなど)を名前で検索する必要がある場合は、SQL検索と呼ばれる無料のRed-Gateツールを参照してください。このツールは、データベース全体であらゆる種類の文字列を検索します。
これは、DBAやデータベース開発者にとって必須のツールです。あらゆる種類の用途に完全に無料で使用できることはすでに述べましたか?
それは私が見つけた別の解決策です。ツールをインストールする必要はありません。クエリアナライザで実行するだけです。
Use [Database]
Go
SELECT
referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID),
referencing_object_name = o.name,
referencing_object_type_desc = o.type_desc,
referenced_schema_name,
referenced_object_name = referenced_entity_name,
referenced_object_type_desc = o1.type_desc,
referenced_server_name, referenced_database_name
--,sed.* -- Uncomment for all the columns
FROM
sys.sql_expression_dependencies sed
INNER JOIN
sys.objects o ON sed.referencing_id = o.[object_id]
LEFT OUTER JOIN
sys.objects o1 ON sed.referenced_id = o1.[object_id]
WHERE
referenced_entity_name = 'SP_Pay_GetData'
order by referencing_object_name
テーブル、列、プロシージャなどのDBアイテムの参照が必要な場合。
あなたは視覚的な専門家のツールを使うことができます、私たちはコードを分析することができますSqlServerコード
詳細:https ://www.visual-expert.com/EN/visual-expert-documentation/code-cross-references/