2016-02-15 1 views
-1

Existe-t-il un moyen d'examiner ce que je n'ai pas utilisé comme valeur lors de la création d'un index filtré? J'ai regardé index créer un script mais toujours pas de valeur.Index filtré SQL Server 2008 R2

create nonclustered index IX1 where status=0 

Je cherche la colonne d'état et valeur 0 en dessous de requête

+1

Quelle est la question? Le studio de gestion SQL Server peut créer les scripts de création pour chaque objet de la base de données (y compris les index). Est-ce que tu ne le savais pas, ou est-ce que je néglige quelque chose de plus complexe ici? – TomTom

+0

ouais il ya bien sûr un script de création d'index mais je cherche quelle valeur j'ai mis lors de la création de l'index filtré – canpoint

+1

Ok, alors quelle est la différence entre le script de création et la valeur que vous avez mise? C'est comme "Je ne veux pas écouter l'enregistrement ce que j'ai dit, je veux savoir ce que j'ai dit". Ils sont identiques. Sauf si quelqu'un a changé l'indice entre-temps. Votre question n'a aucun sens comme elle est. – TomTom

Répondre

2

Le catalogue système intégré vue sys.indexes a les informations de filtre dans la colonne filter_definition:

select 
    o.name as [Table], 
    i.name as [Index], 
    i.filter_definition as [Filter] 
from sys.objects o 
inner join sys.indexes i on i.object_id = o.object_id 
where i.name = 'IX1' 
+0

si ma définition de filtre est null et je suis sûr que c'est un index filtré avec une valeur, quelle est la prochaine étape que je devrais désactiver – canpoint

+0

J'ai testé cela avec un filtre d'index, et la valeur du filtre est apparue correctement dans 'filter_definition 'colonne. Je suppose que 1) vous utilisez une vue qui a ce filtre, ou 2) toutes les lignes dans la base de données sont en fait le statut = 0. –

+0

ouais vous avez raison, j'ai testé dans mon local et il me donne la bonne définition du filtre, je vais vérifier les raisons que vous avez énumérées comme pourquoi il n'est pas là – canpoint

1

Selon les commentaires, SQL Management Studio pouvez écrire le script de votre index filtré. Faites un clic droit sur votre index et cliquez sur Script Index as. Toutefois, si vous souhaitez interroger à l'aide de SQL, vous pouvez simplement sélectionner la colonne filter definition de la table sys.indexes:

SELECT SCHEMA_NAME(t.schema_id) , 
     t.name , 
     i.name , 
     filter_definition 
FROM sys.indexes i 
     INNER JOIN sys.tables t ON t.object_id = i.object_id 
WHERE i.type > 0 
     AND t.is_ms_shipped = 0 
     AND t.name <> 'sysdiagrams' 
     AND (is_primary_key = 0 
      AND is_unique_constraint = 0 
     ) 
     AND i.name = 'IX1' 
+0

merci pour l'aide, mais je sais aussi ce que les gens disent à l'intérieur du commentaire, les gens devraient lire la question très attentivement, insulter quelqu'un est tellement – canpoint