Management Studioでは、テーブルグループを右クリックして、テーブルリストのフィルターを作成できます。誰かがフィルターに複数のテーブルを含める方法を見つけましたか?たとえば、「br_*
"および" tbl_*
"が表示されます。
誰でもこれを行う方法を知っていますか?
自分のアドオンをSMSSにロールすると、探していることを実行できる場合があります。
SQL Server Management Studio 2005アドインを作成するためのブラックアート
アドインを使用してSQL Server 2005 Management Studioの機能を拡張
1つ目は、特定の名前を持つすべてのスキーマオブジェクトを検索および表示するためのものであり、探しているものを拡張できる可能性があります。
いいえ、これはできません。私たちが最初にManagement Studioを入手したとき、私はあなたが考えることができるすべてのものの可能なすべての組み合わせを試しました:_
、%
、*
、"
、'
、&&
、&
、and
、or
、|
、||
など...
Toad for SQL Server(フリーウェアバージョン)を使用しましたが、これには非常に優れたフィルタリングオプションがあります。
最初はCONTAINS
クエリ(例:"br_*" OR "tbl_*"
)を使用できるように見えますが、そうではありません。 LIKE
句に渡される値のみをサポートするようです(たとえば、'app'
は'%app%'
になります)。
私は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の以前のバージョンで利用できるかどうか、またはいつ修正されるかはわかりませんが、今のところ結果に満足しています。
SQLインジェクションメソッドは、SSMS 2017 v17.8.1でも(ある程度)機能しますが、_%
_記号を角かっこで囲んでいるため、文字どおりに解釈されます。
Name-> Containsフィルターを使用している場合、プロファイラーは次のように表示します。.. _AND dtb.name LIKE N'%MyDatabase1%')
_
したがって、Name-> Containsフィールドでは、MyDatabase1') OR (dtb.name LIKE 'MyDatabase2
は単純なケースでそれを行う必要があります。
他の人が言ったように、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;
幸運なことに、私はその偉業を征服しましたが、スキーマでフィルタリングできるため、複数のテーブルを表示できますが、変更するたびにフィルターテキストを入力する必要があるため、私の成功はわずかです。