Gibt es eine Möglichkeit, in allen Tabellen einer Datenbank in SQL Server Management Studio 2008 nach einer Zeichenfolge zu suchen?
Ich möchte nach Zeichenfolgen suchen john
. Das Ergebnis sollte die Tabellen und ihre jeweiligen Zeilen anzeigen, die enthalten john
.
sql
sql-server
search
Ramiz Raja
quelle
quelle
Antworten:
Wenn Sie wie ich sind und bestimmte Einschränkungen in einer Produktionsumgebung haben, möchten Sie möglicherweise eine Tabellenvariable anstelle einer temporären Tabelle und eine Ad-hoc-Abfrage anstelle einer Erstellungsprozedur verwenden.
Abhängig von Ihrer SQL Server-Instanz muss sie natürlich Tabellenvariablen unterstützen.
Ich habe auch eine USE-Anweisung hinzugefügt, um den Suchbereich einzugrenzen
quelle
Ein bisschen spät, aber hoffentlich nützlich.
Probieren Sie einige Tools von Drittanbietern aus, die in SSMS integriert werden können.
Ich habe mit ApexSQL Search (100% kostenlos) mit gutem Erfolg sowohl für die Schema- als auch für die Datensuche gearbeitet, und es gibt auch ein SSMS-Tools Pack mit dieser Funktion (nicht kostenlos für SQL 2012, aber recht erschwinglich).
Das oben gespeicherte Verfahren ist wirklich großartig. Es ist nur so, dass dies meiner Meinung nach viel bequemer ist. Außerdem wären einige geringfügige Änderungen erforderlich, wenn Sie nach Datetime-Spalten oder GUID-Spalten und dergleichen suchen möchten.
quelle
So aktualisieren Sie die Antwort von TechDo für SQL Server 2012. Sie müssen Folgendes ändern:
'FROM ' + @TableName + ' (NOLOCK) '
toFROM ' + @TableName + 'WITH (NOLOCK) ' +
Andernfalls wird der folgende Fehler angezeigt:
Deprecated feature 'Table hint without WITH' is not supported in this version of SQL Server.
Unten finden Sie die vollständig aktualisierte gespeicherte Prozedur:
quelle
Ein bisschen spät, aber Sie können mit dieser Abfrage leicht eine Zeichenfolge finden
quelle
Ich habe dafür einen SP geschrieben, der die Suchergebnisse in Form eines Tabellennamens, der Spaltennamen, in denen die Suchschlüsselwortzeichenfolge gefunden wurde, sowie der Suche in den entsprechenden Zeilen zurückgibt, wie im folgenden Screenshot gezeigt.
Dies ist möglicherweise nicht die effizienteste Lösung, aber Sie können sie jederzeit nach Bedarf ändern und verwenden.
quelle
Es ist keine verschachtelte Schleife erforderlich (äußere Schleife durch Tabellen und innere Schleife durch alle Tabellenspalten). Man kann alle (oder beliebig ausgewählte / gefilterte) Tabellen-Spalten-Kombinationen aus
INFORMATION_SCHEMA.COLUMNS
einer Schleife abrufen und in einer Schleife einfach alle durchlaufen (durchsuchen):quelle
curTabCol
wählt alle interessierenden Kombinationen von table.column aus. Durchsucht dann alle diese Spalten nach Zeichenfolgen, die in der Variablen @search angegeben sind. Wenn eine solche Zeichenfolge (genau) in dieser SQL-Abfrage vorhanden ist (andernfalls verwenden Sie LIKE '% ...%'), wird die Kombination aus Tabellen- und Spaltennamen ausgedruckt.Das war sehr hilfreich. Ich wollte diese Funktion in eine Postgre SQL-Datenbank importieren. Ich dachte, ich würde es mit jedem teilen, der interessiert ist. Wird sie ein paar Stunden haben. Hinweis: Diese Funktion erstellt eine Liste von SQL-Anweisungen, die in die Postgre-Datenbank kopiert und ausgeführt werden können. Vielleicht kann jemand, der schlauer ist als ich, Postgre dazu bringen, die Anweisungen in einer Funktion zu erstellen und auszuführen.
quelle
Die Antwort, die in diesem Beitrag bereits mehrmals erwähnt wurde, habe ich ein wenig übernommen, weil ich auch nur in einer Tabelle suchen musste:
(und auch die Eingabe für den Tabellennamen etwas einfacher gemacht)
quelle