SQL Serverバージョン - 2008 R2の取得SQL Serverのクロスデータベースの依存関係
私はメンテナンスを引き継ぐことを目的に、DMSソリューションの評価に取り組んでいます。元のソリューションには、製造元に関するデータを持つ1つの中央データベースがあります。また、ディーラーごとに1つのデータベースがあります。つまり、多数のデータベース間の依存関係が存在します。
問題:
- ないDBのドキュメント
- ないコードがヒープ
- の
- 多くはありません標準オブジェクトの命名規則
- コメント中央DBは460+テーブルと900 +ストアドプロシージャを持っています、その他に加えて オブジェクト
- 各ディーラーDBには370+テーブルと2350+ SProcsがあります最初のステップとして、他の オブジェクト
にnが、私はクロスデータベースの依存関係を含むオブジェクトの依存関係を、理解することが重要であるため、DBの完全なクリーンアップを推奨しています。私はRed Gateのソリューションを使ってみましたが、出力が大きすぎます。私が望むのは、依存関係のないデータベース内のオブジェクトのリストです。他のオブジェクトに依存することも、それに依存するオブジェクトもありません。 - 依存関係を - 私は、各DBから設定されたこの結果を挿入する先の
SELECT
DB_NAME() referencing_database_name,
OBJECT_NAME (referencing_id) referencing_entity_name,
ISNULL(referenced_schema_name,'dbo') referenced_schema_name,
referenced_entity_name,
ao.type_desc referenced_entity_type,
ISNULL(referenced_database_name,DB_NAME()) referenced_database_name
FROM sys.sql_expression_dependencies sed
JOIN sys.all_objects ao
ON sed.referenced_entity_name = ao.name
私はテーブルを作成します。ここでは
は、私は、依存関係のリストを取得するために使用したスクリプトです。次のステップとして、データベース内のすべてのオブジェクトのリストを含む別のテーブル(AllObjects)を作成します。ここでこれを行うためのスクリプトは次のとおりです。
SELECT
DB_NAME() DBName,
name,
type_desc
FROM sys.all_objects
WHERE type_desc IN
(
'VIEW',
'SQL_TABLE_VALUED_FUNCTION',
'SQL_STORED_PROCEDURE',
'SQL_INLINE_TABLE_VALUED_FUNCTION',
'USER_TABLE',
'SQL_SCALAR_FUNCTION'
)
さて、依存関係テーブルにreferenced_entity_name列に表示されません。この表から名前のリストは、私が探していますオブジェクトのリストを与える必要があります。
SELECT
AO.DBName,
AO.name,
AO.type_desc
FROM AllObjects AO
LEFT OUTER JOIN Dependencies D ON
D.referenced_database_name = AO.DBName AND
D.referenced_entity_name = AO.name AND
D.referenced_entity_type = AO.type_desc
WHERE
D.referenced_database_name IS NULL AND
D.referenced_entity_name IS NULL AND
D.referenced_entity_type IS NULL
は今の質問:
- いくつかのオブジェクトの依存関係は、出力に欠けているように見えます。私は何ですか がありますか?
- 私の発見が正しいことをどのように検証するのですか?
- 私はこれを行う別の方法があるので、 の結果と再確認を比較できますか?事前に
おかげで、
ラジ
SYSTEMオブジェクトも気になりますか? –
しかし、type = 'U'はユーザテーブルだけを与えますか?私はまた、他のユーザーが作成したオブジェクトも考慮する必要があります。 – Raj
申し訳ありませんが、 "is_ms_shipped = 0"は2番目のクエリに適しています。これにより、システム固有のオブジェクトが除外されます。 –