SQL Server Management Studio - использование нескольких фильтров в списке таблиц?

StackOverflow https://stackoverflow.com/questions/935849

Вопрос

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

Я использую SQL Server Management Studio версии 17.1, и в нем есть ошибка SQL-инъекции в конструкции фильтра, так что вы действительно можете избежать использования default

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, чтобы просмотреть созданный запрос и скорректировать его по мере необходимости.

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

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

Как уже говорили другие, вы не можете сделать это в 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;

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top