SQL Server Management Studio - mehrere Filter in Tabellenliste mit?
-
06-09-2019 - |
Frage
In Management Studio können Sie einen Rechtsklick auf der Tabellen-Gruppe einen Filter für die Tabellenliste zu erstellen. Hat jemand dachte, einen Ausweg zu mehreren Tabellen im Filter enthalten? Zum Beispiel würde ich alle Tabellen mit „br_*
“ mag und „tbl_*
“ zu zeigen.
Wer weiß, wie dies zu tun?
Lösung
könnten Sie in der Lage sein, eigene Add-on zu SMSS rollen, die Sie erlauben würde, zu tun, was Sie suchen:
Die schwarze Kunst des Schreibens eines SQL Server Management Studio 2005 Add-In
Extend Funktionalität in SQL Server 2005 Management Studio mit Add-In
Die erste ist speziell für die Suche und alle Schemaobjekte mit einem bestimmten Namen angezeigt wird, so dass Sie auf, dass zu erweitern könnte der Lage sein, für das, was Sie suchen.
Andere Tipps
Nein , können Sie dies nicht tun. Als wir das erste Management Studio habe ich jede mögliche Kombination von alles versucht man sich denken kann: _
, %
, *
, "
, '
, &&
, &
, and
, or
, |
, ||
, etc ...
Ich habe Toad for SQL Server (Freeware-Version) verwendet, die sehr schön Filteroptionen haben.
Ich bin mit SQL Server Management Studio v17.1 und es hat einen SQL-Injection-Fehler in es Filterkonstruktion ist, so dass man eigentlich Standard entweichen kann
tbl.name like '%xxx%'
und Ihre eigene Abfrage (mit einigen Einschränkungen) schreiben. Zum Beispiel zum Filtern von Tabellen, die mit „_arch“, „_hist“, „_purge“ Früher habe ich folgenden Filterwert
enden_arch') and RIGHT(tbl.name, 5) != N'purge' and RIGHT(tbl.name, 4) != N'hist' and not(tbl.name like N'bbb
Sie können SQL Server Profiler verwenden, um die erstellte Abfrage, um zu sehen und es nach Bedarf anpassen.
Nicht sicher, ob dies gleiche Fehler in früheren SQL Management Studio-Versionen verfügbar ist oder wenn es festgelegt werden, aber jetzt bin ich mit dem Ergebnis zufrieden.
Zuerst sieht es aus wie es eine CONTAINS
Abfrage verwenden könnte (z "br_*" OR "tbl_*"
), aber es scheint nicht zu. Es scheint nur einen Wert zu unterstützen, die dann in eine LIKE
Klausel übergeben wird (z 'app'
wird '%app%'
).
Wie schon andere gesagt haben, können Sie nicht tun dies in SQL Server Management Studio (bis einschließlich 2014).
Die folgende Abfrage werden Ihnen eine gefilterte Liste von Tabellen, wenn das alles ist, was Sie brauchen:
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;
Die SQL-Injection-Methode funktioniert immer noch (etwas) ab SSMS 2017 v17.8.1, obwohl es Klammern um das %
Symbol setzt, so ist es jene buchstäblich interpretiert.
Wenn Sie die Name- verwenden> Enthält Filter, Profiler zeigt:
... AND dtb.name LIKE N'%MyDatabase1%')
Also, in der Name-> Enthält Feld: MyDatabase1') OR (dtb.name LIKE 'MyDatabase2
es für einfache Fälle tun sollte
Ihr Glück, ich habe gerade diese Leistung erobert, obwohl mein Erfolg klein ist, weil Sie nach Schema filtern können, die erlauben würden Sie mehr als 1 Tabelle sehen, aber Sie haben den Filtertext in jedes Mal, wenn Sie es ändern mögen eingeben.
Das ist alt ich weiß, aber es ist gut zu wissen, dass es funktioniert, wenn Sie Eingabe nur den „Filter“ Text eingeben. Weiter *
oder %
oder andere Standard-Suchzeichen, geben Sie einfach br_
oder tbl_
oder was auch immer Sie wollen, nach dem gefiltert werden.