SELECT
PKeyTab.TableName, PKeyTab.PKName, FKeyTab.FKName, PKeyTab.ColumnName
FROM
(
SELECT
TableName, PKName, ColumnName
FROM
(
SELECT
OBJECT_NAME(parent_object_id) AS PKTableName,
OBJECT_NAME(OBJECT_ID) AS PKName
FROM
sys.objects
WHERE
type_desc
IN ('PRIMARY_KEY_CONSTRAINT')
) AS PKTab
LEFT OUTER JOIN
(
SELECT
Table_Name AS TableName,
Constraint_Name AS ConstraintName,
Column_Name AS ColumnName
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
) As AllTab
ON ( PKTab.PKTableName = AllTab.TableName
AND
PKTab.PKName = AllTab.ConstraintName)
) AS PKeyTab
LEFT OUTER JOIN
(
SELECT
TableName, FKName, ColumnName
FROM
(
SELECT
OBJECT_NAME(parent_object_id) AS FKTableName,
OBJECT_NAME(OBJECT_ID) AS FKName
FROM
sys.objects
WHERE
type_desc
IN ('FOREIGN_KEY_CONSTRAINT')
) AS FKTab
LEFT OUTER JOIN
(
SELECT
Table_Name AS TableName,
Constraint_Name AS ConstraintName,
Column_Name AS ColumnName
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
) As AllTab
ON ( FKTab.FKTableName = AllTab.TableName
AND
FKTab.FKName = AllTab.ConstraintName)
) AS FKeyTab
ON (PKeyTab.TableName = FKeyTab.TableName AND
PKeyTab.ColumnName = PKeyTab.ColumnName )
ORDER BY PKeyTab.TableName, PkeyTab.PKName