select 
  oSub.name  AS  [子表名称],
  fk.name AS  [外键名称],
  SubCol.name AS [子表列名],
  oMain.name  AS  [主表名称],
  MainCol.name AS [主表列名]
from 
  sys.foreign_keys fk  
    JOIN sys.all_objects oSub  
        ON (fk.parent_object_id = oSub.object_id)
    JOIN sys.all_objects oMain 
        ON (fk.referenced_object_id = oMain.object_id)
    JOIN sys.foreign_key_columns fkCols 
        ON (fk.object_id = fkCols.constraint_object_id)
    JOIN sys.columns SubCol 
        ON (oSub.object_id = SubCol.object_id  
            AND fkCols.parent_column_id = SubCol.column_id)
    JOIN sys.columns MainCol 
        ON (oMain.object_id = MainCol.object_id  
            AND fkCols.referenced_column_id = MainCol.column_id)

解决方案 »

  1.   

    SELECT  K_Table = FK.TABLE_NAME ,
            FK_Column = CU.COLUMN_NAME ,
            PK_Table = PK.TABLE_NAME ,
            PK_Column = PT.COLUMN_NAME ,
            Constraint_Name = C.CONSTRAINT_NAME
    FROM    INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
            INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
            INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
            INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
            INNER JOIN ( SELECT i1.TABLE_NAME ,
                                i2.COLUMN_NAME
                         FROM   INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
                                INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
                         WHERE  i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
                       ) PT ON PT.TABLE_NAME = PK.TABLE_NAME--外键约束
    SELECT  OBJECT_NAME(f.parent_object_id) TableName ,
            COL_NAME(fc.parent_object_id, fc.parent_column_id) ColName
    FROM    sys.foreign_keys AS f
            INNER JOIN sys.foreign_key_columns AS fc ON f.OBJECT_ID = fc.constraint_object_id
            INNER JOIN sys.tables t ON t.OBJECT_ID = fc.referenced_object_id
    WHERE   OBJECT_NAME(f.referenced_object_id) = 'Application'
    ORDER BY TableName