web-dev-qa-db-fra.com

SQL Server Management Studio - utilisation de plusieurs filtres dans la liste de tables?

Dans Management Studio, vous pouvez cliquer avec le bouton droit sur le groupe de tables pour créer un filtre pour la liste de tables. Quelqu'un at-il trouvé un moyen d'inclure plusieurs tables dans le filtre? Par exemple, j'aimerais que toutes les tables avec "br_*" et "tbl_*" soient affichées.

Quelqu'un sait-il comment faire ça?

30
bugfixr

Vous pourrez peut-être créer votre propre complément à SMSS qui vous permettrait de faire ce que vous recherchez:

L'art noir de l'écriture d'un complément SQL Server Management Studio 2005

Étendre les fonctionnalités de SQL Server 2005 Management Studio avec des compléments

Le premier est spécifiquement destiné à la recherche et à l'affichage de tous les objets de schéma portant un nom donné, afin que vous puissiez développer ce que vous recherchez.

6

Non , tu ne peux pas faire ça. Lorsque nous avons reçu Management Studio pour la première fois, j'ai essayé toutes les combinaisons possibles: _, %, *, ", ', &&, &, and, or, |, ||, etc.

30
KM.

J'ai utilisé Toad for SQL Server (version gratuite) qui offre de très jolies options de filtrage. 

2
Etni

Au début, on pourrait penser qu’il pourrait utiliser une requête CONTAINS (par exemple, "br_*" OR "tbl_*"), mais cela ne semble pas être le cas. Il semble prendre en charge uniquement une valeur qui est ensuite transmise à une clause LIKE (par exemple, 'app' devient '%app%').

2
HVS

J'utilise SQL Server Management Studio v17.1 et il a un bogue d'injection SQL dans sa construction de filtre, vous pouvez donc réellement échapper à la valeur par défaut 

tbl.name like '%xxx%' 

et écrivez votre propre requête (avec certaines limitations). Par exemple, pour filtrer les tables se terminant par "_Arch", "_hist", "_purge", j'ai utilisé la valeur de filtre suivante

_Arch') and RIGHT(tbl.name, 5) != N'purge' and RIGHT(tbl.name, 4) != N'hist' and not(tbl.name like N'bbb

Vous pouvez utiliser SQL Server Profiler pour afficher la requête construite et l'ajuster si nécessaire. 

Vous ne savez pas si ce même bogue est disponible dans les versions précédentes de SQL Management Studio ou s'il sera corrigé, mais pour l'instant, je suis satisfait du résultat.

2
Vladas Cibulskis

La méthode d'injection SQL fonctionne toujours (quelque peu) à partir de SSMS 2017 v17.8.1, même si elle met des crochets autour du symbole %, elle sera donc interprétée littéralement.

Si vous utilisez le filtre Nom-> Contient, Profiler indique: ... AND dtb.name LIKE N'%MyDatabase1%')

Ainsi, dans le champ Nom-> Contient: MyDatabase1') OR (dtb.name LIKE 'MyDatabase2 devrait le faire pour les cas simples.

0
krkc

Comme d'autres l'ont déjà dit, vous ne pouvez pas le faire dans SQL Server Management Studio (à partir de 2014).

La requête suivante vous donnera une liste filtrée de tables, si c'est tout ce dont vous avez besoin:

SELECT
    CONCAT(TABLE_SCHEMA, '.', TABLE_NAME) AS TABLE_SCHEMA_AND_NAME,
    TABLE_SCHEMA,
    TABLE_NAME
FROM
    INFORMATION_SCHEMA.TABLES
WHERE
    TABLE_SCHEMA IN ('X', 'Y', 'Z') -- schemas go here
ORDER BY
    TABLE_SCHEMA,
    TABLE_NAME;
0
robyaw

Votre chance, je viens de conquérir cet exploit, bien que mon succès soit modeste, car vous pouvez filtrer par schéma, ce qui vous permettrait de voir plus d’un tableau, mais vous devez taper le texte du filtre chaque fois que vous souhaitez le modifier.

0
Uber_Geek