Gibt es ein T-SQL-Skript, um Tabellen zu finden, die nicht in Sql-Server von gespeicherten procudures, Ansichten, Funktionen usw. verwendet werden. Ich habe eine Datenbank, die 100s von Tabellen hat, wenn nicht mehr und bevor ich gehe Ich wollte wissen, ob es ein Skript gibt, das durch jedes Objekt in der Datenbank gehen und mir sagen kann, ob irgendwelche Tabellen benutzt werden.tsql-Skript, um Tabellen zu finden, die nicht von gespeicherten Prozeduren, Ansichten, Funktionen usw. verwendet werden?
Antwort
Wenn Sie ein Skript verwenden möchten, ist here (Listing SQL Server Object Dependencies) ein sehr guter Artikel, Skripts Abhängigkeiten. Damit können Sie eine Liste von referenzierten Tabellen erstellen. Sie haben die Liste der Tabellen in Ihrer Datenbank, damit Sie wissen, welche nicht verwendet werden.
In dem Artikel verwenden sie
sp_dependsgespeicherte Prozedur. Es hat jedoch einen Fehler. Wenn Sie beispielsweise eine gespeicherte Prozedur verwenden, die die Tabelle "MyTable" verwendet, und Sie die Prozedur erstellen, bevor Sie die Tabelle "MyTable" erstellen, wird dies in der Liste der Abhängigkeiten nicht angezeigt. Deshalb sollten Sie in der Tabelle
syscommentsnach Abhängigkeiten suchen. Aber das ist auch nicht korrekt, denn wenn Sie den Namen der Tabelle im Kommentar haben, werden Sie ihn als Abhängigkeit behandeln.
Wenn Sie Management Studio verwenden, können Sie mit der rechten Maustaste auf eine Tabelle klicken und Abhängigkeiten anzeigen.
Und hier ist ein Link zu einem Artikel auf, wie dies in Tsql zu tun, was ich vermute, ist das, was Sie suchen:
https://web.archive.org/web/1/http://blogs.techrepublic%2ecom%2ecom/datacenter/?p=277
Man kann immer eine temporäre Tabelle aufbauen/var mit allen Tabellen, die Abhängigkeiten haben, und vergleichen Sie es mit allen Tabellen, um zu sehen, was keine Abhängigkeiten hat.
Soweit ich weiß, können Sie sich nicht wirklich auf das Abhängigkeitsmanagement von SQL Server verlassen. Lukasz wies auf eines der vielen Probleme hin.
Im Jahr 2005 ist das Äquivalent der alten Tabelle syscomments sys.sql_modules.
Um alle Tabellennamen zu finden, die in T-SQL-Code nicht auftreten (Views, SPs, Funktionen), verwenden Sie diese Aussage:
select t.name, sys.objects.name foundin, sys.objects.type_desc
from sys.objects t
left outer join
sys.sql_modules
inner join sys.objects on sys.objects.object_id = sys.sql_modules.object_id
on sys.sql_modules.definition like '%' + t.name + '%'
where t.type = 'U'
and sys.objects.name is null
order by t.name, type_desc, foundin
Wenn Sie die Zeile auf Kommentar mit der NULL-Zustand befindet, finden Sie alle Vorkommen aller Tabellennamen im TSQL-Code. (Egal, ob der Tabellenname wirklich auf diese Tabelle verweist)
Ich werde dies ausprobieren und Sie wissen lassen, wie es funktioniert. – Xaisoft
+1 Ich suchte nach einer Möglichkeit, Tabellenreferenzen innerhalb von Ansichten/Prozeduren zu finden, und mit kleinen Änderungen funktioniert das perfekt dafür. –
Dies funktioniert ziemlich gut für gespeicherte Prozeduren, aber Sie müssen die t.type = 'U' Einschränkung auf t.type IN ('U', 'P') entspannen – Roman
- 1. Protokoll Verwendung von Datenbanktabellen, Funktionen, gespeicherten Prozeduren, Ansichten usw.
- 2. SQL Server Abfrage, um alle gespeicherten Prozeduren, Funktionen, Tabellen und Ansichten mit ihren Parametern/Spalten
- 3. Temporäre Tabellen in gespeicherten Prozeduren
- 4. Massenumbenennung von Tabellen und gespeicherten Prozeduren
- 5. Oracle Globale temporäre Tabellen und Verwendung von gespeicherten Prozeduren und Funktionen
- 6. Metaprogrammierung mit gespeicherten Prozeduren?
- 7. Erstellen von doppelten temporären Tabellen innerhalb verschachtelten gespeicherten Prozeduren
- 8. SQL Server 2014 - Liste alle Funktionen und Unterfunktionen in der gespeicherten Prozedur verwendet
- 9. Ausnahmemanagement in gespeicherten Prozeduren?
- 10. Verwendung von gespeicherten Funktionen im Entity-Framework
- 11. Sqlplus mit gespeicherten Prozeduren, um eine Zeile zu aktualisieren
- 12. PHP und Datenbanken: Ansichten, Funktionen und gespeicherte Prozeduren Leistung
- 13. Gespeicherte Prozeduren und die von ihnen verwendeten Tabellen
- 14. Gespeicherte Prozeduren und Funktionen
- 15. Kommandozeilen-Tool/Skript, um alle Oracle 10g-Pakete/Prozeduren/Funktionen usw. zu scripten?
- 16. Aufruf von DocumentDb gespeicherten Prozeduren von .net
- 17. Reguläre Ausdrücke in gespeicherten Prozeduren
- 18. Unterschied zwischen gespeicherten Prozeduren und erweiterten gespeicherten Prozeduren
- 19. Speicherung von Daten aus gespeicherten Prozeduren
- 20. Leistungsproblem mit 8 verschachtelten gespeicherten Prozeduren
- 21. Anfängerleitfaden zu gespeicherten Prozeduren mit MySQL?
- 22. Wo ist der beste Ort, um Schienen Funktionen zu setzen, die von vielen Controllern und Ansichten verwendet werden
- 23. Sollten vorbereitete Anweisungen aufgehoben werden, wenn sie in gespeicherten Prozeduren verwendet werden?
- 24. T-SQL Wie erstellt man Tabellen dynamisch in gespeicherten Prozeduren?
- 25. SQL-Anweisung zum Abrufen von Tabellennamen, Ansichten und gespeicherten Prozeduren nach Schema
- 26. Gespeicherte Prozeduren, Ansichten, Funktionen, Trigger mit Toad für Oracle abrufen
- 27. Paniermehl werden nicht im Cache gespeicherten Ansichten hinzugefügt
- 28. Abrufen von Feldern in Visual Studio der gespeicherten Prozedur, die temporäre Tabellen verwendet
- 29. Löschen Sie alle gespeicherten Prozeduren auf einmal
- 30. MySQL: Ansichten vs gespeicherte Prozeduren
Was ist die Tabelle, die "nicht verwendet wird"? Du meinst leere Tische? –
Nein, ich meine Tabellen, die nicht in gespeicherten Prozeduren, Ansichten, Funktionen usw. verwendet werden. Nehmen wir an, ich habe vor einiger Zeit eine Datenbank erstellt und sie hat 100 Tabellen und einige sind veraltet, aber ich bin mir nicht sicher, also vor mir Geh und fang an, Tische fallen zu lassen, ich möchte herausfinden, ob sie benutzt werden. Ich verstehe nicht, warum diese Frage abgelehnt wurde, scheint eine sehr gültige und vernünftige Frage zu sein. – Xaisoft
Ändern Sie den Titel möglicherweise in "T-SQL-Skript, um Tabellen zu finden, auf die keine gespeicherten Prozeduren, Sichten und Funktionen verweisen." – shufler