web-dev-qa-db-ja.com

SQL Server Management Studio-テーブルリストで複数のフィルターを使用していますか?

Management Studioでは、テーブルグループを右クリックして、テーブルリストのフィルターを作成できます。誰かがフィルターに複数のテーブルを含める方法を見つけましたか?たとえば、「br_* "および" tbl_* "が表示されます。

誰でもこれを行う方法を知っていますか?

35
bugfixr

自分のアドオンをSMSSにロールすると、探していることを実行できる場合があります。

SQL Server Management Studio 2005アドインを作成するためのブラックアート

アドインを使用してSQL Server 2005 Management Studioの機能を拡張

1つ目は、特定の名前を持つすべてのスキーマオブジェクトを検索および表示するためのものであり、探しているものを拡張できる可能性があります。

7

いいえ、これはできません。私たちが最初にManagement Studioを入手したとき、私はあなたが考えることができるすべてのものの可能なすべての組み合わせを試しました:_%*"'&&&andor|||など...

36
KM.

Toad for SQL Server(フリーウェアバージョン)を使用しましたが、これには非常に優れたフィルタリングオプションがあります。

2
Etni

最初はCONTAINSクエリ(例:"br_*" OR "tbl_*")を使用できるように見えますが、そうではありません。 LIKE句に渡される値のみをサポートするようです(たとえば、'app''%app%'になります)。

2
HVS

私は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プロファイラを使用して、作成されたクエリを確認し、必要に応じて調整できます。

この同じバグがSQL Management Studioの以前のバージョンで利用できるかどうか、またはいつ修正されるかはわかりませんが、今のところ結果に満足しています。

2

SQLインジェクションメソッドは、SSMS 2017 v17.8.1でも(ある程度)機能しますが、_%_記号を角かっこで囲んでいるため、文字どおりに解釈されます。

Name-> Containsフィルターを使用している場合、プロファイラーは次のように表示します。.. _AND dtb.name LIKE N'%MyDatabase1%')_

したがって、Name-> Containsフィールドでは、MyDatabase1') OR (dtb.name LIKE 'MyDatabase2は単純なケースでそれを行う必要があります。

0
krkc

他の人が言ったように、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
robyaw

幸運なことに、私はその偉業を征服しましたが、スキーマでフィルタリングできるため、複数のテーブルを表示できますが、変更するたびにフィルターテキストを入力する必要があるため、私の成功はわずかです。

0
Uber_Geek