这是一个开始:
SELECt t.name, CASE k.type WHEN 1 THEN 'PK' WHEN 2 THEN 'FK' WHEN 3 THEN 'Common' END, c.nameFROM sysobjects t INNER JOIN syscolumns c ON c.id = t.id INNER JOIN syskeys k ON k.id = t.id AND c.colid IN (k.key1, k.key2, k.key3, k.key4, k.key5, k.key6, k.key7, k.key8)WHERe t.type = 'U' AND k.type in (1,2)
它不包含键ID,因为我想您可能会以某种方式对非空表ID和keyN列进行哈希处理以产生键的唯一ID。
它还不包括唯一索引。为此,您需要采取UNIOn以下措施:
SELECt t.name, 'Unique', c.nameFROM sysobjects t INNER JOIN syscolumns c ON c.id = t.id INNER JOIN sysindexes i ON i.id = t.idWHERe t.type = 'U'



