Frage

Ich bin über eine Reihe von großen und komplexen Reihe von gespeicherten Prozeduren erben, die auf sehr große Datenmengen monatliche Verarbeitung zu tun.

Wir sind dabei, sie zu debuggen, so dass sie den ursprünglichen Prozess entsprechen, die in VB6 geschrieben wurde. Der Grund, warum sie beschlossen, wieder sie in T-SQL zu schreiben ist, weil der vb Prozess Tage dauert, und dieser neue Prozess dauert Stunden.

Das alles ist in Ordnung, aber wie kann ich diese jetzt massiven Brocken von T-SQL-Code zu machen (1,5k + Zeilen) auch nur entfernt lesbar / wartbar.

Jede Erfahrung machen T-SQL nicht viel von Kopfschmerzen ist sehr willkommen.

War es hilfreich?

Lösung

Erstellen Sie zunächst ein Verzeichnis voller SQL-Dateien und halten sie dort. Fügen Sie diesen Satz von SQL-Dateien auf ein Versionskontrollsystem. SVN funktioniert gut. Haben Sie ein Tool, das diese in die Datenbank geladen und überschreibt alle bestehenden.

Haben Sie eine Testdatenbank und Baseline-Berichte, die zeigen, wie die Ausgabe der monatlichen Verarbeitung aussehen sollte. Ihre Tests auch in Form von SQL-Dateien unter Versionskontrolle sein sollten.

Sie können nun Ihre Procs so viel Refactoring, wie Sie möchten, und Ihre Tests laufen danach die korrekte Funktion zu bestätigen.

Andere Tipps

Für die Formatierung / pretty-fying SQL habe ich hatte Erfolg mit http: //www.sqlinform .com / -. kostenlose Online-Version, die Sie ausprobieren können, und eine ebenfalls verfügbar Desktop-Version

  

SQLinForm ist ein automatischer SQL-Code-Formatierer für alle gängigen Datenbanken (Oracle, SQL Server, DB2 / UDB, Sybase, Informix, PostgreSQL, MySQL, etc.) mit vielen Formatierungsoptionen.

Auf jeden Fall starten, indem Sie den Code Neuformatierung, insbesondere Vertiefungen.

Dann die SQL modularisieren. Ziehen Sie Stücke in kleinere, deskriptiv benannte Prozeduren und Funktionen in ihren eigenen Stand-alone-Dateien. Dies allein ich sehr gut funktioniert mit der Verbesserung meines Verständnisses von großen SQL-Dateien.

ApexSQLScript ist ein großes Werkzeug für das Skripting eine komplette Datenbank aus - Sie dann, dass in der Quellcodeverwaltung überprüfen und Änderungen verwalten

.

Ich habe auch festgestellt, dass die sprocs konsequent dokumentieren können Sie ziehen aus, um Informationen über sie die Daten über den Quellcode mit in sys.sql_modules -. Sie Tags verwenden können, oder was auch immer Dokument Subsysteme helfen

Verwenden Sie auch Schemen (oder sogar mehrere Datenbanken) - das wird wirklich Ihre Datenbank in logische Einheiten aufzuteilen helfen und Fragen der Architektur weisen darauf hin,

.

Soweit großen Code, habe ich vor kurzem fand die Funktion SQL2005 CTE sehr nützlich zu sein in Code mit vielen verschachtelten Abfragen Verwaltung (auch nicht rekursiv). Statt eine Reihe von Verschachtelung und Vertiefung verwalten, kann CTEs deklariert und nach oben und dann in der Endabrechnung verwendet gebaut werden. Dies hilft auch in Refactoring, wie es viel leichter zu entfernen redundante verschachtelte Abfragen und Spalten scheint.

Stored Procs und benutzerdefinierte Funktionen sind von entscheidender Bedeutung für eine große Codebasis verwalten und dunklen Ecken zu eliminieren. Ich habe nicht Ansichten gefunden schrecklich nützlich zu sein, weil sie nicht parametrierbare sind (UDF kann in diesen Fällen verwendet werden, wenn die Ergebnismengen sind klein).

Versuchen Sie, die SQL so viel wie möglich zu modularisieren und eine Reihe von Tests haben, die es Ihnen ermöglichen, zu erhalten, Refactoring und Funktionen hinzufügen, wenn nötig. Ich hatte einmal das Vergnügen, eine Stored Proc vererben, die 5000 Zeilen summiert und ich habe immer noch Alpträume davon. Nachdem das Projekt beendet war gedruckt ich in dem Prozess den gespeicherten proc für ein Lachen destorying X Bäume aus. Während eines unserer Unternehmen wöchentlichen Sitzungen stand legte ich es einem Ende zum anderen und es über die gesamte Länge des Gebäudes streched. ISED dies als Beispiel dafür, wie nicht zu schreiben und gespeicherte Prozeduren beibehalten.

Eine Sache, die Sie tun können, ist ein automatisiertes Skript haben alle Änderungen an der Quellcodeverwaltung zu speichern, so dass Sie Änderungen an den Verfahren (unter Verwendung eines diff auf den früheren und aktuellen Versionen) überprüfen können

Es ist definitiv nicht frei, sondern auch für Ihre T-SQL formatiert in einer konsistenten Art und Weise, Redgate Software SQL Prompt ist sehr praktisch. Solange Syntax Ihre proc ist korrekt, ein paar Tastenanschläge (Strg + K, Y) wird alles sofort formatieren. Die Optionen geben Ihnen viel Kontrolle darüber, wie Ihre SQL formatiert ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top