SQL Server Management Studio - использование нескольких фильтров в списке таблиц? - PullRequest
30 голосов
/ 01 июня 2009

В Management Studio можно щелкнуть правой кнопкой мыши группу таблиц, чтобы создать фильтр для списка таблиц. Кто-нибудь придумал, как включить в фильтр несколько таблиц? Например, я бы хотел, чтобы отображались все таблицы с «br_*» и «tbl_*».

Кто-нибудь знает, как это сделать?

Ответы [ 9 ]

32 голосов
/ 01 июня 2009

Нет , вы не можете этого сделать. Когда мы впервые получили Management Studio, я перепробовал все возможные комбинации: _, %, *, ", ', &&, &, and, or, |, || и т. Д. *

6 голосов
/ 01 июня 2009

Вы можете добавить свой собственный аддон в SMSS, который позволит вам делать то, что вы ищете:

Черное искусство написания надстройки SQL Server Management Studio 2005

Расширение функциональности в SQL Server 2005 Management Studio с помощью надстроек

Первый предназначен специально для поиска и отображения всех объектов схемы с заданным именем, чтобы вы могли расширить это для того, что вы ищете.

2 голосов
/ 07 августа 2017

Я использую SQL Server Management Studio v17.1, в конструкции фильтра есть ошибка внедрения SQL, поэтому вы можете на самом деле избежать значения по умолчанию

tbl.name like '%xxx%' 

и напишите собственный запрос (с некоторыми ограничениями). Например, для фильтрации таблиц, которые заканчиваются на «_arch», «_hist», «_purge», я использовал следующее значение фильтра

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

Вы можете использовать SQL Server Profiler, чтобы увидеть построенный запрос и настроить его по мере необходимости.

Не уверен, доступна ли эта же ошибка в предыдущих версиях SQL Management Studio или когда она будет исправлена, но сейчас я доволен результатом.

2 голосов
/ 05 июня 2009

Я использовал Toad для SQL Server (бесплатная версия), которая имеет очень хорошие опции фильтрации.

2 голосов
/ 01 июня 2009

Сначала кажется, что он может использовать запрос CONTAINS (например, "br_*" OR "tbl_*"), но это не так. Кажется, он поддерживает только значение, которое затем передается в предложение LIKE (например, 'app' становится '%app%').

0 голосов
/ 10 апреля 2019

Метод SQL-инъекции по-прежнему работает (в некоторой степени) с SSMS 2017 v17.8.1, хотя он заключает в скобки символ %, поэтому он будет интерпретировать их буквально.

Если вы используете фильтр Имя-> Содержит, Профилировщик показывает: ... AND dtb.name LIKE N'%MyDatabase1%')

Итак, в поле Имя-> Содержит: MyDatabase1') OR (dtb.name LIKE 'MyDatabase2 должен сделать это для простых случаев.

0 голосов
/ 26 мая 2016

Это старый, я знаю, но хорошо знать, что он может работать, если вы вводите только ввод текста фильтра. Пропустите * или % или любые другие стандартные символы поиска, просто введите br_ или tbl_ или все, что вы хотите отфильтровать.

0 голосов
/ 17 мая 2016

Как уже говорили другие, вы не можете сделать это в SQL Server Management Studio (начиная с 2014 года).

Следующий запрос даст вам отфильтрованный список таблиц, если это все, что вам нужно:

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 голосов
/ 18 марта 2011

Вам повезло, я только что победил этот подвиг, хотя мой успех невелик, потому что вы можете фильтровать по схеме, которая позволит вам увидеть более 1 таблицы, но вам придется вводить текст фильтра каждый раз, когда вы хотите его изменить.

...