2010-12-07 22 views

Répondre

1

Que diriez-vous quelque chose comme

SELECT 
    i.name as IndexName, 
    o.name as TableName, 
    i.type_desc 
FROM sys.indexes i 
join sys.objects o on i.object_id = o.object_id 
where i.[type] = 2 
and i.is_unique = 0 
and i.is_primary_key = 0 
and o.[type] = 'U' 
+0

Je me joins à 'sys.tables' au lieu d'avoir à définir le type de votre' sys.objects' ....... –

0

La requête ci-dessous la liste des tables que l'utilisateur et également la liste des tables sans index. Les tables sans index auront un NULL dans la colonne index_name.

SELECT 
    sys.objects.name table_name, 
    sys.indexes.name index_name, 
    sys.indexes.type_desc index_type 
FROM sys.objects LEFT JOIN 
    sys.indexes 
ON sys.objects.object_id = sys.indexes.object_id 
where sys.objects.type_desc = 'USER_TABLE' 
+0

Je voudrais rejoindre 'sys.tables' au lieu de devoir définir le type de vos' sys.objects' ... –

0

En C# peut utiliser SMO:

Server server = new Server(@".\SQLEXPRESS"); 
Database db = server.Databases["DBName"]; 
foreach(Table table in db.Tables) 
{ 
    foreach (Index index in table.Indexes) 
    { 
    } 
}