SQL Server Management Studio - usando vários filtros na lista de tabela?
-
06-09-2019 - |
Pergunta
No Management Studio, você pode clique direito sobre o grupo de tabelas para criar um filtro para a lista de tabela. Alguém já descobriu uma maneira de incluir várias tabelas no filtro? Por exemplo, eu gostaria de todas as tabelas com "br_*
" e "tbl_*
" para aparecer.
Alguém sabe como fazer isso?
Solução
Você pode ser capaz de lançar seu próprio addon para SMSS que lhe permitiria fazer o que você está procurando:
A Arte Negra de escrever um SQL Server Management Studio 2005 Add-In
estender a funcionalidade no SQL Server 2005 Management Studio com add-ins
O primeiro é especificamente para pesquisar e exibir todos os objetos de esquema com um nome dado para que você pode ser capaz de expandir isso para o que você está procurando.
Outras dicas
Não , você não pode fazer isso. Quando se got Management Studio Eu tentei todas as combinações possíveis de tudo que você poderia pensar: _
, %
, *
, "
, '
, &&
, &
, and
, or
, |
, ||
, etc ...
Eu usei Toad for SQL Server (versão freeware) que tem opções de filtragem muito agradáveis.
Estou usando o SQL Server Management Studio v17.1 e tem um bug de injeção SQL em sua construção filtro, assim você pode realmente escapar padrão
tbl.name like '%xxx%'
e escrever sua própria consulta (com algumas limitações). Por exemplo, para mesas de filtro que terminam com "_arch", "_hist", "_purge" Eu costumava seguinte valor do filtro
_arch') and RIGHT(tbl.name, 5) != N'purge' and RIGHT(tbl.name, 4) != N'hist' and not(tbl.name like N'bbb
Você pode usar o SQL Server Profiler para ver a consulta construída e ajustá-lo conforme necessário.
Não tenho certeza se este mesmo erro está disponível nas versões anteriores SQL Server Management Studio ou quando ele será corrigido, mas por agora eu estou feliz com o resultado.
No começo parece que ele poderia usar uma consulta CONTAINS
(por exemplo "br_*" OR "tbl_*"
), mas não parece. Parece apenas para apoiar um valor que é então passada em uma cláusula LIKE
(por exemplo 'app'
se torna '%app%'
).
Como já foi dito, você não pode fazer isso no SQL Server Management Studio (para cima e incluindo 2014).
A consulta a seguir lhe dará uma lista filtrada de tabelas, se isso é tudo que você precisa:
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;
O método de injeção SQL ainda funciona (um pouco) a partir de SSMS 2017 v17.8.1, embora coloca colchetes em torno do símbolo %
, por isso vai interpretar os literalmente.
Se você estiver usando o Nome> Contém filtro, shows Profiler:
... AND dtb.name LIKE N'%MyDatabase1%')
Assim, no Nome> Contém campo:. MyDatabase1') OR (dtb.name LIKE 'MyDatabase2
deve fazê-lo para casos simples
A sua sorte em, eu só conquistou esse feito, embora o meu sucesso é pequena porque você pode filtrar por esquema que permitem que você veja mais de 1 mesa, mas você tem que digitar o texto do filtro em cada vez que você quiser mudá-lo.
Esta é a velha eu sei, mas é bom saber que ele pode funciona se você digitar apenas entrando o texto "Filtro". Ir *
ou %
ou quaisquer outros caracteres de pesquisa padrão, basta digitar br_
ou tbl_
ou o que você deseja filtrar.