2009-06-02 10 views
2

Ich schreibe ein ziemlich langes SQL-Skript, das fast 2000 Zeilen Code ausführt. Da es sehr schwierig wird, ein langes Skript zu verstehen, möchte ich es in logische Einheiten zerlegen und sie in anderen SQL-Dateien trennen.Aufbrechen des SQL-Skripts

Was wäre der beste Weg, dies zu tun? Wäre jede logische Einheit eine gespeicherte Prozedur? vielleicht eine UDF?

Antwort

2

Profitieren Sie von gespeicherten Prozeduren und Funktionen. Wenn Sie reines SQL verwenden, gibt es keinen besseren Platz für die logischen Einheiten Ihres Codes. Außerdem wird die Pflege/Bearbeitung Ihres Codes wesentlich erleichtert.

Wenn Ihr Skript so lang ist, möchten Sie vielleicht einen Blick darauf werfen, was Sie tun, und sich eine andere Skriptsprache oder sogar C#/LINQ überlegen. Manchmal macht es Sinn, alles in SQL zu behalten, und manchmal zwingt man etwas in SQL, aber nur Sie können diese Entscheidung treffen.

Außerdem kann C# oder eine andere Skriptsprache problemlos in die Quellcodeverwaltung integriert werden. Nur Dinge zum Nachdenken!

0

Erstens, 2000 Zeilen von SQL ist nicht eine zu große Menge in einer Datei (DDL läuft oft so viel oder mehr für eine bescheiden große Datenbank). Es ist jedoch viel zu viel in einem einzigen Prozess zu haben! Der Weg dazu ist in der Tat, logische Komponenten in separate Prozeduren zu zerlegen. Sofern Sie nicht einen spezifischen Engpass überwinden müssen oder Operationen, die in SQL nicht leicht zu bewerkstelligen sind, benötigen Sie keine UDFs.

Ein letzter Ratschlag: Denken Sie daran, Ihren Datenzugriff über Views zu vereinfachen.

BTW: was versuchst du mit so einem großen proc zu erreichen? Ich arbeite sehr viel mit T-SQL und bin nie in die Nähe von 2000 Zeilen Code gekommen!

+0

Ich schreibe ein Deploymnet-Skript, das eine große Anzahl von Tabellen über gespeicherte Prozeduren füllt. Das Bereitstellungsskript ruft eine andere Gruppe von SPs auf –

0

Was Sie verwenden, um es aufzubrechen variieren je nachdem, was Sie tun.

Dies ist ähnlich wie bei jeder Programmiersprache, Anzeigen die Skripte/Funktionen zu groß werden, die Notwendigkeit, aufgebrochen werden.

Wenn Ihr Skript aufgrund derselben oder ähnlicher Abfragen groß ist, könnte das Skript reduziert werden, indem diese Abfragen als Sichten hinzugefügt werden.

Gespeicherte Procs und benutzerdefinierte Funktionen sind auch ein weiterer guter Weg zu gehen, je nachdem, was Ihr Code macht.

0

Das scheint wie viel Code für eine Charge.

Brechen Sie jeden logischen Schritt/Prozess (z. B. Bestellung/Versandauftrag/Kundenregistrierung) in eine separate gespeicherte Prozedur aus. Sie können es nützlich finden, ein Prozessablaufdiagramm zu erstellen und zu verwenden, um zu helfen, wo Sie Ihren T-SQL-Code-Stapel aufteilen können.

Wenn Sie versuchen, Rechenlogik auszuführen unter Verwendung von T-SQL dann solche Operationen zu verwaltetem Code wie CLR-Funktionen etc.

0

Pause es in mehrere sps bewegen, try-catch-Blöcke und Fehlerbehandlung (nicht vergessen , Division durch 0 ist kein einfangbarer Fehler) und richten Sie einen Job ein, um jede Sequenz nacheinander auszuführen.

Verwandte Themen