7
votes

Obtenez la liste des contraintes et des index uniques dans une base de données

Je dois obtenir la liste de toutes les contraintes de clé uniques et les index d'une base de données particulière. Je fais quelque chose comme ceci:

SELECT * FROM sys.sysobjects WHERE type!='u' AND name LIKE <tablename> 


0 commentaires

5 Réponses :


1
votes

Une contrainte unique est représentée dans Sys.Objects par le type 'UQ'

 select i.name, o.name from sys.indexes i
inner join sys.objects o on i.object_id= o.object_id


0 commentaires

1
votes

Vous pouvez obtenir les contraintes de clé uniques et les index de SyS.indexes. Plus précisément, des contraintes uniques: xxx


0 commentaires

9
votes

Comme les contraintes uniques sont implémentées sous les couvertures en tant qu'index, vous pouvez obtenir toutes ces informations directement à partir de sys.indexes: xxx

à répéter pour toutes les bases de données (et vraisemblablement sans filtre pour une table spécifique): xxx


1 commentaires

@Nav J'ai précisé (le titre sonnait toujours comme si vous souhaitiez des résultats de la base de données croisées - j'ai laissé cette partie de ma réponse au cas où un futur lecteur).



2
votes

Les autres réponses n'ont pas renvoyé des listes complètes pour moi. Cette requête a fonctionné pour que je puisse retourner tous les index uniques qui ne sont pas des clés principales ou des tables système: xxx


0 commentaires

0
votes

Je cherchais une solution - Recherchez tous les index uniques sur une table spécifique. et je suis venu sur cette question comme point de départ.

À la fin, je mets ensemble mon propre script et je vais le partager ici.

La bonne chose à propos de ce script est qu'il donne les colonnes de L'index.

Toute la gloire Aller à l'auteur du script d'origine, le lien est inclus dans le code. xxx

dans l'exemple ci-dessus i Utilisé le tableau suivant: xxx

et cela m'a donné le résultat suivant:

 Entrez la description de l'image ici


0 commentaires