CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Abhängigkeiten von Datenbankobjekten mit Hilfe des Werkzeuges SQL Search finden

Einführung

Beim Bearbeiten von großen, aber auch kleinen Datenbanken kommt es oft vor, dass Sichten, Prozeduren, Funktionen oder ganze Tabellen inhaltlich oder namentlich geändert werden müssen. Manchmal ist es aber auch notwendig, ganze Datenbankobjekte zu löschen. Ist die zu bearbeitende Datenbank zuvor selbst erstellt worden, ist das in der Regel kein großes Problem, weil bekannt ist, wie Datenbankobjekte voneinander abhängig sind.

Wurde aber die Betreuung der Datenbank im Zuge eines Projektes von einem Kollegen oder Kunden übernommen, ist keine Sicherheit gegeben, dass das Ändern oder Löschen der betreffenden Objekte nicht auch Einfluss auf andere Objekte hat. In solch einem Fall kann entweder eine ausführliche Dokumentation des Datenbankmodells genutzt werden, oder es wird ein Werkzeug eingesetzt, welches die bestehenden Abhängigkeiten von Objekten aufzeigt. Ein solches Werkzeug ist zum Beispiel die Software SQL Search der Firma Red Gate, welches im folgenden Artikel etwas ausführlicher vorgestellt werden soll. 

Suche mit Bordmitteln des SQL Server Management Studios

Zum Aufzeigen von wechselseitigen Abhängigkeiten einzelner Datenbankobjekte bietet bereits das SQL Server Management Studio die Möglichkeit, über einen Klick auf „Abhängigkeiten anzeigen“ im Kontextmenü des jeweiligen Datenbankobjektes, sich eine Liste der betroffenen Objekte anzeigen zu lassen.

Abhaengigkeit anzeigen

Dieses Feature funktioniert in der Regel sehr zuverlässig, bietet aber wenig Komfort bezüglich des Filterns der Objekttypen der zu durchsuchenden Objekte. Außerdem bezieht sich die Suche immer auf die Datenbank, in der sich das zu suchende Objekt selbst befindet. Es besteht keine Sicherheit, dass das betreffende Objekt nicht zusätzlich in einer anderen Datenbank auf dem Datenbankserver verwendet bzw. auf dasselbe referenziert wird.

Objektabhaengigkeiten

Im gezeigten Beispiel wurde nach den Abhängigkeiten der Tabelle T_S_District gesucht. Der Screenshot zeigt das Suchergebnis der Objektabhängigkeiten des SQL Server Management Studios. Darin ist zu sehen, dass fünf Objekte der aktuellen Datenbank direkt abhängig von der Tabelle T_S_District sind. Es handelt sich hierbei um drei Prozeduren (P_*) und zwei Sichten (V_*). Soll der Name oder der Aufbau der Tabelle T_S_District geändert werden, müssen alle oben aufgeführten Objekte im Objektexplorer des SQL Server Management Studios händisch gesucht und der SQL-Code entsprechend überarbeitet werden. Wird die Tabelle zusätzlich in einer anderen Datenbank verwendet, ist dies nicht mittels Standardfunktionen des SQL Server Management Studios ersichtlich, sondern kann nur mit Hilfe weiterer Werkzeuge von Drittanbietern angezeigt werden.

Suche mit Hilfe des Werkzeuges SQL Search

Mit dem kostenlosen Werzeug SQL Search der Firma Red Gate werden die oben genannten Kritikpunkte weitestgehend behoben.
Das Installationspaket kann von der Internetseite http://www.redgate.com/products/sqldevelopment/sqlsearch/ direkt heruntergeladen und installiert werden.
Da es sich hierbei um eine kostenlose Software handelt, ist es möglich, das Werkzeug, natürlich nach Absprache, auch beim Kunden zu installieren und zu nutzen.

Nach der Installation und dem Neustart des SQL Server Management Studios wird in der Buttonleiste eine neue Schaltfläche namens SQL Search eingeblendet. Durch Anklicken der Schaltfläche wird der Suchdialog des Werkzeuges angezeigt.

SQL Search

Im linken Eingabefeld des oberen Bereiches kann nun ein Teil oder der ganze Name des zu suchenden Objektes eingeben werden. Im ersten der drei Menüs des oberen Suchdialoges kann die Suche auf bestimmte Objekttypen, wie z. B. Sichten oder Prozeduren beschränkt werden. Im zweiten und dritten Menü werden die zu durchsuchenden Datenbanken und Server angegeben.

SQL Search2

Bei der Suche nach Abhängigkeiten der Tabelle T_S_District mit SQL Search werden für die aktuelle Datenbank nun zusätzlich weitere Objekte, wie z.B. ein Primärschlüssel angezeigt. Im Ergebnisfenster ist sehr gut ersichtlich, um welche Typen es sich bei den gefundenen Objekten handelt, in welcher Datenbank sie sich befinden und an welcher Stelle (im Namen oder im SQL-Code) der gesuchte Text gefunden wurde. Wird nun ein Objekt mit der Maus ausgewählt, wird im unteren Bereich des Fensters der entsprechende SQL-Code angezeigt. Durch das anschließende Betätigen des Links „Select object in Object Explorer“ im mittleren Bereich des Ergebnisfensters wird das Objekt im Objektexplorer sofort markiert. Somit kann Schritt für Schritt durch die abhängigen Objekte navigiert werden.

Ein weiterer schon erwähnter Vorteil besteht darin, nach Objekten in anderen Datenbanken oder sogar auf anderen Datenbankservern zu suchen.

Eine zweite Suche nach der Tabelle T_S_District in einer anderen Datenbank ergab, dass auch hier Objekte existieren, die auf die gesuchte Tabelle referenzieren. Durch die Auswahl „All Databases“ im Datenbank-Menü des Such-Dialoges können somit alle abhängigen Objekte aller Datenbanken angezeigt und gegebenenfalls überarbeitet werden.

SQL Search2

Systemvoraussetzungen

Die aktuelle Version 1.1 des Werkzeuges SQL Search kann mit folgenden Datenbanken genutzt werden:

  • SQL Server 2005
  • SQL Server 2008
  • SQL Server 2012 (CTP3 and RC0)

Folgende SQL Server Management Studio Versionen werden unterstützt:

  • SSMS 2005
  • SSMS 2008
  • SSMS 2008 Express
  • SSMS 2008R2
  • SSMS 2012 (CTP3 and RC0)