一意の制約はインデックスとして内部で実装されているため、この情報はすべて sys.indexes から直接取得できます:
SELECT [schema] = OBJECT_SCHEMA_NAME([object_id]), [table] = OBJECT_NAME([object_id]), [index] = name, is_unique_constraint, is_unique, is_primary_key FROM sys.indexes -- WHERE [object_id] = OBJECT_ID('dbo.tablename');
プレ>すべてのデータベースに対して繰り返すには (おそらく特定のテーブルのフィルターなしで):
DECLARE @sql NVARCHAR(MAX) = N''; SELECT @sql += 'SELECT db = ' + name + ', [schema] = OBJECT_SCHEMA_NAME([object_id]), [table] = OBJECT_NAME([object_id]), [index] = name, is_unique_constraint, is_unique, is_primary_key FROM ' + QUOTENAME(name) + '.sys.indexes;' FROM sys.databases WHERE database_id BETWEEN 4 AND 32766; EXEC sp_executesql @sql;
プレ>