| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- -- SQL Server 查询外键和索引信息的脚本
- -- 查询所有外键信息
- SELECT
- fk.name AS ForeignKeyName,
- t1.name AS TableName,
- c1.name AS ColumnName,
- t2.name AS ReferencedTableName,
- c2.name AS ReferencedColumnName
- FROM sys.foreign_keys AS fk
- INNER JOIN sys.foreign_key_columns AS fkc ON fk.object_id = fkc.constraint_object_id
- INNER JOIN sys.tables AS t1 ON fkc.parent_object_id = t1.object_id
- INNER JOIN sys.columns AS c1 ON fkc.parent_object_id = c1.object_id AND fkc.parent_column_id = c1.column_id
- INNER JOIN sys.tables AS t2 ON fkc.referenced_object_id = t2.object_id
- INNER JOIN sys.columns AS c2 ON fkc.referenced_object_id = c2.object_id AND fkc.referenced_column_id = c2.column_id;
- -- 查询所有表的索引信息
- SELECT
- t.name AS TableName,
- i.name AS IndexName,
- c.name AS ColumnName,
- ic.index_column_id AS ColumnPosition,
- i.is_unique AS IsUnique,
- i.is_primary_key AS IsPrimaryKey
- FROM sys.tables AS t
- INNER JOIN sys.indexes AS i ON t.object_id = i.object_id
- INNER JOIN sys.index_columns AS ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
- INNER JOIN sys.columns AS c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
- WHERE i.type > 0 -- 忽略堆表(无聚集索引的表)
- ORDER BY t.name, i.name, ic.index_column_id;
- -- 查询主键信息(作为参考)
- SELECT
- t.name AS TableName,
- c.name AS ColumnName,
- i.name AS IndexName
- FROM sys.tables AS t
- INNER JOIN sys.indexes AS i ON t.object_id = i.object_id
- INNER JOIN sys.index_columns AS ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id
- INNER JOIN sys.columns AS c ON ic.object_id = c.object_id AND ic.column_id = c.column_id
- WHERE i.is_primary_key = 1
- ORDER BY t.name, c.name;
|