Question

Dans Management Studio, vous pouvez faire un clic droit sur le groupe de tables pour créer un filtre pour la liste des tables. Quelqu'un at-il trouvé un moyen d'inclure plusieurs tables dans le filtre? Par exemple, je voudrais toutes les tables avec « br_* » et « tbl_* » à se manifester.

Quelqu'un sait comment faire cela?

Était-ce utile?

La solution

Vous pourriez être en mesure de rouler votre propre addon à SCSM qui vous permettra de faire ce que vous cherchez:

L'Add-In Black Art d'écrire un SQL Server Management studio 2005

étendre la fonctionnalité dans SQL Server 2005 Management Studio avec Add-ins

Le premier est spécifiquement pour la recherche et l'affichage de tous les objets de schéma avec un nom donné afin que vous pourriez être en mesure de développer sur ce pour ce que vous recherchez.

Autres conseils

Non , vous ne pouvez pas le faire. Quand nous sommes arrivés Management Studio J'ai essayé toutes les combinaisons possibles de tout ce que vous pourriez penser: _, %, *, ", ', &&, &, and, or, |, ||, etc ...

Je l'ai utilisé Toad for SQL Server (version freeware) qui a des options de filtrage très agréable.

J'utilise SQL Server Management Studio V17.1 et il a un bug d'injection SQL dans sa construction de filtre, de sorte que vous pouvez réellement échapper à défaut

tbl.name like '%xxx%' 

et écrivez votre propre requête (avec certaines limites). Par exemple, pour filtrer les tables qui se termine par « _arch », « _HIST », « _purge » J'ai utilisé suivant la valeur du filtre

_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 voir la requête construite et l'ajuster au besoin.

Je ne sais pas si ce même bug est disponible dans les versions précédentes de SQL Studio ou quand il sera fixé, mais pour l'instant je suis content du résultat.

Au début, il semble que cela pourrait utiliser une requête CONTAINS (par exemple "br_*" OR "tbl_*"), mais il ne semble pas. Il semble pour supporter seulement une valeur qui est ensuite passé dans une clause de LIKE (par exemple 'app' devient '%app%').

Comme d'autres l'ont dit, vous ne pouvez pas le faire dans SQL Server Management Studio (et y compris 2014).

La requête suivante vous donnera une liste filtrée des tables, si cela est tout ce que 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;

La méthode d'injection SQL fonctionne encore (un peu) à partir de SSMS 2017 v17.8.1, bien qu'il met entre parenthèses autour du symbole de %, il interprétera les littéralement.

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

Alors, dans le Name-> Contient le terrain: MyDatabase1') OR (dtb.name LIKE 'MyDatabase2 devrait le faire pour les cas simples

.

Votre chance, je viens conquit cet exploit, bien que mon succès est faible parce que vous pouvez filtrer par schéma qui vous permettra voir plus de 1 table, mais vous devez saisir le texte du filtre à chaque fois que vous voulez changer.

est Je sais, mais il est bon de savoir qu'il peut fonctionne si vous entrez simplement entrer dans le texte « filtre ». Passer * ou % ou tout autre caractère de recherche standard, entrez simplement br_ ou tbl_ ou tout ce que vous voulez filtrer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top