Ich habe eine zentrale Tabelle in meiner Datenbank geändert und sp_depends gibt buchstäblich Hunderte von Ergebnissen zurück. Ich befürchte, dass einige dieser gespeicherten Prozeduren nach meiner Änderung möglicherweise nicht mehr kompiliert werden.
Das Überprüfen einer einzelnen gespeicherten Prozedur ist einfach (ich führe nur das Änderungsskript erneut aus und prüfe, ob der Vorgang erfolgreich ist), aber dies bei mehr als 100 Prozeduren zu tun, ist etwas umständlich.
Ich weiß, dass ich ein Skript wie dieses verwenden kann, um alle Objekte meiner Datenbank neu zu kompilieren, aber der eigentliche Vorgang wird beim nächsten Ausführen der gespeicherten Prozedur nicht sofort ausgeführt, sodass dies in meinem Fall nicht angemessen erscheint.
Ich dachte auch, dass ich alle gespeicherten Prozeduren insgesamt löschen und meine Datenbank mit meinem Quellcodeverwaltungssystem neu synchronisieren könnte, aber diese Option ist zwar praktikabel, aber nicht sehr elegant. Gibt es einen besseren Weg, dies zu tun?
Ich verwende SQLServer 2008 R2 und meine Datenbankskripte werden in einem VS 2008-Datenbankprojekt gespeichert.
Zur Verdeutlichung befürworte ich nicht, dass man sich beim Testen von Code ausschließlich auf diesen Ansatz verlassen sollte. Genau wie in c # erkennen Sie beim Codieren sofort Syntaxfehler in anderen abhängigen Dateien (und verwenden dann andere Teststrategien, z. B. Unit-Tests, die normalerweise mehrere Größenordnungen langsamer sind). Ich halte es für sinnvoll, SQL-Abhängigkeiten zu erkennen Fehler in Sekunden, anstatt einen vollständigen Funktionstest durchführen zu müssen, der in der Regel einige Stunden dauern kann.
Es ist eine Problemumgehung, aber Sie können die CREATE PROCEDURE-Skripte für die Datenbank generieren (Rechtsklick auf Datenbank -> Aufgaben -> Generieren von Skripten), CREATE PROCEDURE suchen und durch ALTER PROCEDURE ersetzen und dann analysieren.
Ich hoffe du bekommst hier eine bessere Antwort - ich bin auch interessiert! :) :)
quelle
Sie können SQL Server Data Tools (SSDT) verwenden. Mit Microsoft Visual Studio können Sie ein SQL Server-Projekt erstellen. Man importiert dann die Datenbank in das Projekt und erstellt dann das Projekt. Wenn fehlerhafte gespeicherte Prozeduren oder Objekte vorhanden sind, wird ein Kompilierungsfehler angezeigt.
quelle
Vielleicht möchten Sie sich diese SO-Frage ansehen. Ich suche nach einer zuverlässigen Möglichkeit, gespeicherte T-SQL-Prozeduren zu überprüfen. Hat jemand einen? das fragt im Wesentlichen das gleiche, mit mehreren Antworten.
Um auf dem von Alaa Awad veröffentlichten Skript aufzubauen, sollte dies das Schema und die Datenbank der referenzierten und referenzierenden Objekte anzeigen. Wenn Sie viele temporäre Tabellen über Aliase (die manchmal bei der Verwendung
sys.sql_expression_dependencies
angezeigt werden ), UDTT-Parameter oder andere dynamische Funktionen verwenden, müssen Sie möglicherweise die Funktionensys.dm_sql_referenced_entities
odersys.dm_sql_referencing_entities
stattdessen / auch verwenden.quelle
Verwenden Sie die in SQL Server 2008 hinzugefügten sys.sql_expression_dependencies
quelle