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>
5 Réponses :
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
Vous pouvez obtenir les contraintes de clé uniques et les index de SyS.indexes.
Plus précisément, des contraintes uniques:
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: à répéter pour toutes les bases de données (et vraisemblablement sans filtre pour une table spécifique): p>
@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).
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:
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. P>
La bonne chose à propos de ce script est qu'il donne les colonnes de L'index. p>
Toute la gloire Aller à l'auteur du script d'origine, le lien est inclus dans le code. p> dans l'exemple ci-dessus i Utilisé le tableau suivant: p> et cela m'a donné le résultat suivant: p>