SQL Server Management Studio - использование нескольких фильтров в списке таблиц?
В Management Studio вы можете щелкнуть правой кнопкой мыши по группе таблиц, чтобы создать фильтр для списка таблиц. Кто-нибудь понял способ включения нескольких таблиц в фильтр? Например, я бы хотел, чтобы все таблицы с "br_*
" и "tbl_*
" отображались.
Кто-нибудь знает, как это сделать?
Ответы
Ответ 1
Вы можете добавить свой собственный аддон к SMSS, который позволит вам делать то, что вы ищете:
Черное искусство написания надстройки SQL Server Management Studio 2005
Расширение функциональности в SQL Server 2005 Management Studio с помощью надстроек
Первый предназначен специально для поиска и отображения всех объектов схемы с заданным именем, чтобы вы могли расширить это для того, что вы ищете.
Ответ 2
Нет, вы не можете этого сделать. Когда мы впервые получили Management Studio, я пробовал все возможные комбинации всего, о чем вы могли подумать: _
, %
, *
, "
, '
, &&
, &
, and
, or
, |
, ||
и т.д.
Ответ 3
Поначалу похоже, что он может использовать запрос CONTAINS
(например, "br_*" OR "tbl_*"
), но, похоже, это не так. Кажется, он поддерживает только значение, которое затем передается в предложение LIKE
(например, 'app'
становится '%app%'
).
Ответ 4
Я использовал Toad для SQL Server (бесплатная версия), которая имеет очень хорошие параметры фильтрации.
Ответ 5
Я использую 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 или когда она будет исправлена, но пока я доволен результатом.
Ответ 6
конечно, не так красиво, но для быстрого доступа к информации схемы вы всегда можете просто Script Table as... Create To... New Query Editor Window, а затем использовать кнопку "Comment Comment" в редакторе чтобы прокомментировать все это. Лично я считаю, что это быстрее просматривать и легче копировать.
Ответ 7
Как говорили другие, вы не можете сделать это в 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;
Ответ 8
Метод SQL-инъекции по-прежнему работает (в некоторой степени) с SSMS 2017 v17.8.1, хотя он заключает в скобки символ %
, поэтому он будет интерпретировать их буквально.
Если вы используете фильтр Name-> Contains, Профилировщик показывает:... AND dtb.name LIKE N'%MyDatabase1%')
Таким образом, в поле Name-> Contains: MyDatabase1') OR (dtb.name LIKE 'MyDatabase2
следует сделать это для простых случаев).
Ответ 9
В счастье, я просто победил этот подвиг, хотя мой успех невелик, потому что вы можете фильтровать по схеме, которая позволит вам увидеть более 1 таблицы, но вы должны набирать текст фильтра каждый раз, когда хотите его изменить.
Ответ 10
Это старый, который я знаю, но хорошо знать, что он может работать, если вы вводите только ввод текста "фильтр". Пропустите *
или %
или любые другие стандартные символы поиска, просто введите br_
или tbl_
или все, что вы хотите отфильтровать.