データベース内のすべての外部キー インデックスのリストを表示する SQL サーバーでクエリを探しています。データベース内に多数のインデックスがあり、一部はテーブルの外部キーにあり、外部キーと主キーに対するインデックスを除くすべてのインデックスを削除しようとしています。
2203 次
3 に答える
2
たぶん、最初の答えのひねりはあなたのためにそれをすることができますか?:
SELECT
sc.name + '.' + t.name as tableName,
OBJECT_NAME(fkc.constraint_object_id) AS [FKey-Name],
OBJECT_NAME(fkc.referenced_object_id) ReferencedTable,
c.name as ColumnName
, i.name AS ReferencedKeyName
FROM sys.foreign_key_columns fkc
JOIN sys.index_columns ic ON ic.object_id = fkc.parent_object_id
AND ic.column_id = fkc.parent_column_id
JOIN sys.indexes i ON i.index_id = ic.index_id
AND i.object_id = ic.object_id
JOIN sys.columns c ON c.object_id = ic.object_id
AND c.column_id = ic.column_id
JOIN sys.tables t ON t.object_id = c.object_id
JOIN sys.schemas sc ON sc.schema_id = t.schema_id
WHERE t.is_ms_shipped = 0
ORDER BY tableName, OBJECT_NAME(fkc.constraint_object_id), columnName
于 2012-10-18T21:00:00.650 に答える
2
これは、必要なことを行うクエリです。
SELECT
sc.name + '.' + t.name as tableName,
i.name as indexName,
c.name as columnName
FROM sys.foreign_key_columns fkc
JOIN sys.index_columns ic ON ic.object_id = fkc.parent_object_id
AND ic.column_id = fkc.parent_column_id
JOIN sys.indexes i ON i.index_id = ic.index_id
AND i.object_id = ic.object_id
JOIN sys.columns c ON c.object_id = ic.object_id
AND c.column_id = ic.column_id
JOIN sys.tables t ON t.object_id = c.object_id
JOIN sys.schemas sc ON sc.schema_id = t.schema_id
where t.is_ms_shipped = 0
ORDER BY tableName, indexName, columnName
于 2012-10-18T19:38:30.423 に答える
0
SELECT fk.name,
OBJECT_NAME(fk.parent_object_id) AS parent_table,
c1.name AS parent_column,
OBJECT_NAME(fk.referenced_object_id) AS referenced_table,
c2.name AS referenced_column
FROM sys.foreign_keys fk
INNER JOIN sys.foreign_key_columns fkc
ON fk.object_id = fkc.constraint_object_id
INNER JOIN sys.columns c1
ON fkc.parent_object_id = c1.object_id
AND fkc.parent_column_id = c1.column_id
INNER JOIN sys.columns c2
ON fkc.referenced_object_id = c2.object_id
AND fkc.referenced_column_id = c2.column_id
于 2012-10-18T19:22:40.177 に答える