1

を使用してSQL Server 2008 R2います。

最近、Web アプリケーションのライブ データを含むデータベースを取得しました。

それを確認すると、依存関係がある、つまり既に暗示されているが宣言されていないテーブルがたくさんあることがわかりました。

例えば ​​:

TableA列があります[Id], [Name], [Address]。ここ[Id]にありprimary keyます。
TableB列があります[Id], [TableAId], [Salary]。ここ[Id]に がprimary keyあり、列には(TableA の Id 以外の値[TableAId]ではなく) の値のみが含まれていますが、外部キーとして宣言されていません。[TableA].[Id]

コードを確認すると、両方のテーブルのレコードが同じイベントに挿入されていることがわかりました。したがって、[TableB].[TableAId]列には次を含む値のみが[TableA].[Id]含まれます。

今、私はそれらのような他の依存関係を見つけたいと思っています。

SQL サーバー クエリ、ツール、またはサード パーティ ソフトウェアを使用することは可能ですか?

4

2 に答える 2

0

いくつかの依存関係チェックを試してください。

--- Get the source objects, columns and dependent objects using the data.
select so.name as sourceObj
     , so.type as sourceType
     , c.name  as colname
     , st.name as coltype
     , u.name  as DependentObj
     , d.selall   as is_select_all
     , d.resultobj as is_updated
     , d.readobj   as is_read
     --, d.*
  from sys.columns c 
     ----- object that owns the column
 inner join sys.objects so on so.object_id = c.object_id
 inner join sys.types st on c.system_type_id = st.system_type_id
     ----- holds dependencies
     inner join sysdepends d   on d.id = c.object_id
 ----- object that uses the column
 inner join sys.objects u on u.object_id = d.depid

すべてのテーブル/ビュー/プロシージャなどをリストできます。ユースケースに本当に適しているビットは次のとおりです。

     , d.sellall   as is_select_all
     , d.resultobj as is_updated
     , d.readobj   as is_read

これらのフィールドのいずれかが 1 の場合、それらは選択、更新、または直接取得されます。

これが少し役立つことを願っています。楽しみ

于 2013-10-24T01:47:35.857 に答える