Beschreibung des allgemeinen Bedarfs zum Auffinden von Daten und Objekten in einer Datenbank
Die Suche nach Daten sowie gespeicherten Prozeduren, Tabellen und anderen Objekten in der Datenbank ist ein wichtiges Thema, auch für C # -Entwickler und für die .NET-Entwicklung im Allgemeinen.
Sehr oft kann eine Situation auftreten, in der Sie Folgendes finden müssen:
- Datenbankobjekt (Tabelle, Ansicht, gespeicherte Prozedur, Funktion usw.)
- Daten (Wert und in welcher Tabelle befindet sich)
- Code-Snippet in Datenbankobjektdefinitionen
Es gibt viele fertige Lösungen, sowohl kostenpflichtig als auch kostenlos.
Zunächst wird erläutert, wie Sie mit den integrierten DBMS-Tools nach Daten und Objekten in einer Datenbank suchen können. Anschließend wird
erläutert, wie dies mit dem kostenlosen
Dienstprogramm dbForge Search durchgeführt wird .
Suchen Sie mit den integrierten DBMS-Tools
Mithilfe des folgenden Skripts können Sie feststellen, ob sich die Employee-Tabelle in der Datenbank befindet:
Tabelle nach Namen durchsuchenselect [object_id], [schema_id], schema_name([schema_id]) as [schema_name], [name], [type], [type_desc], [create_date], [modify_date] from sys.all_objects where [name]='Employee';
Das Ergebnis könnte ungefähr so aussehen:

Hier werden angezeigt:
- Bezeichner des Objekts und des Schemas, in dem sich das Objekt befindet
- der Name dieser Schaltung und der Name dieses Objekts
- Objekttyp und Beschreibung dieses Objekttyps
- Datum und Uhrzeit der Erstellung und letzten Änderung des Objekts
Mit dem folgenden Skript können Sie alle Vorkommen der Zeile "Project" suchen:
Suchen Sie nach allen Objekten, indem Sie einen Teilstring in einem Namen eingeben select [object_id], [schema_id], schema_name([schema_id]) as [schema_name], [name], [type], [type_desc], [create_date], [modify_date] from sys.all_objects where [name] like '%Project%';
Das Ergebnis könnte ungefähr so aussehen:

Wie Sie dem Ergebnis entnehmen können, enthält der Teilstring „Project“ nicht nur zwei Tabellen Project und ProjectSkill, sondern auch einige Primär- und Fremdschlüssel.
Um zu verstehen, wem genau diese Schlüssel gehören, fügen wir der Ausgabe das Feld parent_object_id und seinen Namen sowie das Schema, in dem es sich befindet, wie folgt hinzu:
Suchen Sie nach allen Objekten, indem Sie eine Teilzeichenfolge im Namen mit der Ausgabe der übergeordneten Objekte eingeben select ao.[object_id], ao.[schema_id], schema_name(ao.[schema_id]) as [schema_name], ao.parent_object_id, p.[schema_id] as [parent_schema_id], schema_name(p.[schema_id]) as [parent_schema_name], p.[name] as [parent_name], ao.[name], ao.[type], ao.[type_desc], ao.[create_date], ao.[modify_date] from sys.all_objects as ao left outer join sys.all_objects as p on ao.[parent_object_id]=p.[object_id] where ao.[name] like '%Project%';
Das Ergebnis ist eine Tabelle mit detaillierten Informationen zu den übergeordneten Objekten, d. H. Wo Primär- und Fremdschlüssel definiert sind:

Die folgenden Systemobjekte werden in Abfragen verwendet:
Daher haben wir mithilfe der integrierten DBMS-Tools herausgefunden, wie Objekte in der Datenbank gefunden werden können.
Nun zeigen wir anhand des Beispiels für die Zeichenfolgensuche, wie Sie Daten in der Datenbank finden.
Um den Zeichenfolgenwert für alle Datenbanktabellen zu ermitteln, können Sie die folgende
Lösung verwenden . Wir vereinfachen diese Lösung und zeigen anhand des folgenden Skripts, wie Sie beispielsweise den Wert von „Ramiro“ ermitteln können:
Suchen Sie in allen Datenbanktabellen nach Zeichenfolgewerten durch Teilzeichenfolge set nocount on declare @name varchar(128), @substr nvarchar(4000), @column varchar(128) set @substr = '%Ramiro%' declare @sql nvarchar(max); create table
Das Ergebnis der Ausführung kann folgendermaßen aussehen:

Hier werden die Tabellennamen angezeigt und in welchen Spalten der Wert mit dem Teilstring „Ramiro“ gespeichert ist. Sowie die Anzahl der Eingaben dieses Teilstrings, die für das gefundene Tabellen-Spalten-Paar gefunden wurden.
Mit den folgenden Systemansichten können Sie nach Objekten suchen, in deren Definitionen sich ein bestimmter Code befindet:
- sys.sql_modules
- sys.all_sql_modules
- sys.syscomments
In der letzten Ansicht können Sie beispielsweise mit dem folgenden Skript nach allen Objekten suchen, in deren Definitionen ein bestimmter Code gefunden wurde:
Suchen Sie nach Codeausschnitten in Datenbankobjektdefinitionen select obj.[object_id], obj.[name], obj.[type_desc], sc.[text] from sys.syscomments as sc inner join sys.objects obj on sc.[id]=obj.[object_id] where sc.[text] like '%code snippet%';
Hier werden die Bezeichnung, der Name, die Beschreibung und die vollständige Definition des Objekts angezeigt.
Suchen Sie mit dem kostenlosen Dienstprogramm dbForge Search
Es ist jedoch bequemer, mit vorgefertigten guten Werkzeugen zu suchen. Ein solches Tool ist
dbForge Search .
Um dieses Dienstprogramm im
SSMS- Fenster
aufzurufen, klicken Sie auf die Schaltfläche

.
Das folgende Suchfeld wird angezeigt:

Achten Sie auf die Oberseite (von links nach rechts):
- Sie können den Suchmodus wechseln (nach DDL (Objekten) oder Daten suchen)
- direkt was wir suchen (welcher Teilstring)
- ob Groß- und Kleinschreibung beachtet werden soll, nach exakter Wortübereinstimmung suchen, nach Vorkommen suchen:

- Gruppenergebnis nach Objekttyp - Schaltfläche

- Wählen Sie die gewünschten Objekttypen aus:

- Sie können auch mehrere Datenbanken angeben, um eine Instanz von MS SQL Server zu suchen und auszuwählen
Dies ist alles im Objektsuchmodus, d. H. Wenn DDL aktiviert ist:

Im Datensuchmodus ändert sich nur die Auswahl der Objekttypen:

Es stehen nämlich nur Tabellen zur Auswahl, in denen die Daten selbst gespeichert sind:

Nach wie vor finden wir alle Vorkommen der Unterzeichenfolge "Projekt" in den Namen der Objekte:

Wie Sie sehen, wurde der Suchmodus für DDL-Objekte ausgewählt. Er ist ausgefüllt, da wir nach der Zeile "Projekt" suchen. Der Rest war standardmäßig alles.
Wenn Sie ein gefundenes Objekt markieren, wird unten der Definitionscode dieses Objekts oder seines gesamten übergeordneten Objekts angezeigt.
Sie können die Navigation auch zum gefundenen Objekt verschieben, indem Sie auf die Schaltfläche klicken

:

Sie können gefundene Objekte auch nach ihrem Typ gruppieren:

Bitte beachten Sie, dass auch solche Tabellen angezeigt werden, in denen sich Felder befinden, deren Namen den Teilstring „Projekt“ enthalten. Denken Sie jedoch daran, dass der Suchmodus geändert werden kann: um nach vollständiger Übereinstimmung / teilweise / Groß- / Kleinschreibung zu suchen oder nicht.
Jetzt finden wir den Wert "Ramiro" in allen Tabellen:

Beachten Sie, dass alle Zeilen, die die Teilzeichenfolge "Ramiro" der ausgewählten Employee-Tabelle enthalten, unten angezeigt werden.
Sie können die Navigation auch zum gefundenen Objekt verschieben, indem Sie wie zuvor die Taste drücken

:

So können wir in der Datenbank nach den notwendigen Objekten und Daten suchen.
Fazit
Die Möglichkeiten, sowohl die Daten selbst als auch die Objekte in der Datenbank zu durchsuchen, wurden sowohl mit den integrierten Tools des MS SQL Server-DBMS selbst als auch mit dem kostenlosen
Dienstprogramm dbForge Search untersucht .
Devart hat auch eine Reihe anderer kostenloser vorgefertigter Lösungen, von denen eine vollständige Liste
hier zu finden
ist .
Quellen