Wie finde ich mit einem # heraus, in welcher Tabelle und Spalte es sich befindet?
Es ist mir egal, ob es schnell ist, es muss nur funktionieren.
sql-server
Allain Lalonde
quelle
quelle
Antworten:
Dies könnte Ihnen helfen . - von Narayana Vyas. Es durchsucht alle Spalten aller Tabellen in einer bestimmten Datenbank. Ich habe es schon einmal benutzt und es funktioniert.
Dies ist der gespeicherte Prozess über den obigen Link. Die einzige Änderung, die ich vorgenommen habe, war das Ersetzen einer Tabellenvariablen durch die temporäre Tabelle, damit Sie nicht jedes Mal daran denken müssen, sie zu löschen.
quelle
Wenn Sie eine solche Suche nur einmal ausführen müssen, können Sie wahrscheinlich eines der Skripte verwenden, die bereits in anderen Antworten angezeigt werden. Ansonsten würde ich empfehlen, dafür ApexSQL Search zu verwenden. Es ist ein kostenloses SSMS-Add-In und hat mir sehr viel Zeit gespart.
Bevor Sie eines der Skripte ausführen, sollten Sie es basierend auf dem Datentyp anpassen, den Sie suchen möchten. Wenn Sie wissen, dass Sie nach einer Datums- / Uhrzeitspalte suchen, müssen Sie die nvarchar-Spalten nicht durchsuchen. Dies beschleunigt alle oben genannten Abfragen.
quelle
Basierend auf der Antwort von bnkdev habe ich den Code von Narayana so geändert , dass alle Spalten durchsucht werden, auch numerische.
Es läuft langsamer, aber diese Version findet tatsächlich alle Übereinstimmungen, nicht nur die in Textspalten.
Ich kann diesem Kerl nicht genug danken. Ersparte mir Tage der Suche von Hand!
quelle
Dies ist meine unabhängige Sicht auf diese Frage, die ich für meine eigene Arbeit verwende. Es funktioniert in SQL2000 und höher, ermöglicht Platzhalter und Spaltenfilterung und durchsucht die meisten normalen Datentypen.
Eine Pseudocode-Beschreibung könnte sein
select * from * where any like 'foo'
Ich stelle es nicht in Proc-Form, da ich es nicht über Hunderte von DBs hinweg verwalten möchte und es sowieso wirklich für Ad-hoc-Arbeiten ist. Bitte zögern Sie nicht, Fehlerbehebungen zu kommentieren.
quelle
Ich habe die Antwort von Allain Lalonde optimiert ( https://stackoverflow.com/a/436676/412368 ). Numerische Werte werden weiterhin unterstützt. Sollte ungefähr 4-5 mal schneller sein (1:03 vs 4:30), getestet auf einem Desktop mit einer 7 GB Datenbank. http://developer.azurewebsites.net/2015/01/mssql-searchalltables/
quelle
Auf diese Weise kann ich diese Frage lösen. Getestet auf SQLServer2008R2
quelle
Danke für das wirklich nützliche Skript.
Möglicherweise müssen Sie dem Code die folgende Änderung hinzufügen, wenn Ihre Tabellen nicht konvertierbare Felder enthalten:
Chris
quelle
Ich habe eine Lösung von vor einiger Zeit, die ich weiter verbessert habe. Sucht auch in XML-Spalten, wenn Sie dazu aufgefordert werden, oder sucht nach ganzzahligen Werten, wenn nur eine Ganzzahlzeichenfolge angegeben wird.
Quelle: http://fullparam.wordpress.com/2012/09/07/fck-it-i-am-going-to-search-all-tables-all-collumns/
quelle
Ich habe mir einmal ein Werkzeug geschrieben, um genau das zu tun:
a7 SqlTools
Es ist kostenlos und Open Source:
Github Link
quelle
Hier sehr süße und kleine Lösung:
==========================
quelle
Ein anderer Weg mit JOIN und CURSOR:
quelle
Möglicherweise müssen Sie einen invertierten Index für Ihre Datenbank erstellen . Es ist sicher, ziemlich schnell zu sein.
quelle
Angenommen, wenn Sie alle Tabellen mit Namen abrufen möchten, enthält ein Spaltenname die Anmeldezeit in der Datenbank. MyDatabase unten ist das Codebeispiel
quelle
Wenn Sie phpMyAdmin installiert haben, verwenden Sie die Suchfunktion .
Wählen Sie Ihre Datenbank aus.
Stellen Sie sicher, dass Sie Datenbank und keine Tabelle ausgewählt haben. Andernfalls wird ein völlig anderer Suchdialog angezeigt.
quelle
quelle
Zu Entwicklungszwecken können Sie einfach die erforderlichen Tabellendaten in einen einzigen HTML-Code exportieren und direkt danach suchen.
quelle
Datenbank-Client-Tools (wie DBeaver oder phpMyAdmin ) unterstützen häufig die Volltextsuche in der gesamten Datenbank.
quelle