sql >> データベース >  >> RDS >> Sqlserver

SQLServerのデータベースのすべてのテーブル間の関係を知る

    場合によっては、テキスト表現も役立つことがあります。システムカタログビューでこのクエリを使用すると、すべてのFK関係のリストと、2つのテーブルをリンクする方法(およびそれらが操作する列)を取得できます。

    SELECT
        fk.name 'FK Name',
        tp.name 'Parent table',
        cp.name, cp.column_id,
        tr.name 'Refrenced table',
        cr.name, cr.column_id
    FROM 
        sys.foreign_keys fk
    INNER JOIN 
        sys.tables tp ON fk.parent_object_id = tp.object_id
    INNER JOIN 
        sys.tables tr ON fk.referenced_object_id = tr.object_id
    INNER JOIN 
        sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id
    INNER JOIN 
        sys.columns cp ON fkc.parent_column_id = cp.column_id AND fkc.parent_object_id = cp.object_id
    INNER JOIN 
        sys.columns cr ON fkc.referenced_column_id = cr.column_id AND fkc.referenced_object_id = cr.object_id
    ORDER BY
        tp.name, cp.column_id
    

    これをExcelにダンプすると、親テーブル、参照テーブル、またはその他のものに基づいて、スライスおよびダイスすることができます。

    ビジュアルガイドは役に立ちますが、テキストのドキュメントが同じくらい良い(またはさらに良い)場合もありますが、私の2セントだけです.....



    1. パフォーマンスの驚きと仮定:DATEADD

    2. Statement.setFetchSize(nSize)メソッドはSQL Server JDBCドライバーで実際に何をしますか?

    3. PostgreSQLストリーミングと論理レプリケーション–比較

    4. SQLServerの別のストアドプロシージャでストアドプロシージャを実行する