it-swarm.com.de

Sollten Programmierer SSIS verwenden und wenn ja, warum?

Aus welchen Gründen sollte ich als .NET-Entwickler SSIS-Pakete dem Schreiben von Code vorziehen? Wir haben eine Tonne Pakete in der Produktion, in denen ich zurzeit arbeite, und sie sind ein Albtraum, um sowohl zu "schreiben" (vielleicht zu zeichnen?) Als auch zu warten. Jedes Paket sieht aus wie eine Schüssel mit bunten Spaghetti mit C # - und VB.NET-Skripten, die an den Stellen gemischt werden, an denen die Abstraktionen zusammenbrechen. Um herauszufinden, was jede "Execute SQL Task" oder "Foreach Loop" macht, muss ich auf das verdammte Ding doppelklicken und einen Baum von Literalwerten und Ausdrücken durchsuchen, die auf mehrere Registerkarten verteilt sind.

Ich bin aufgeschlossen und würde gerne wissen, ob andere gute Entwickler SSIS produktiver finden als nur Code zu schreiben. Wenn Sie SSIS produktiver finden, teilen Sie mir bitte mit, warum.

93
Charles

Ich verwende SSIS jeden Tag, um ein großes Data Warehouse und einen großen Cube zu warten und zu verwalten. Ich bin seit zwei Jahren zu 100% im Bereich Business Intelligence und Data Warehousing tätig. Davor war ich 10 Jahre lang .NET-Anwendungsentwickler.

Der Wert von SSIS besteht darin, Daten als Workflow-Engine von einem Ort zum anderen zu verschieben, wobei möglicherweise eine begrenzte Transformation und bedingte Verzweigung erforderlich sind. Wenn Ihre Pakete viel Skript enthalten, verwendet Ihr Team SSIS für die falschen Aufgaben oder ist mit SQL nicht vertraut oder hat sich dem Hype verschrieben. SSIS-Pakete sind sehr schwer zu debuggen. Skriptkomponenten sind ein absoluter Albtraum und sollten nur zum Formatieren, Schleifen oder als letzter Ausweg verwendet werden.

  1. Halten Sie Ihre Pakete einfach, SQL-Tasks und Datenfluss-Tasks.
  2. Machen Sie so viel Arbeit wie möglich außerhalb von SSIS, vorzugsweise in SQL
  3. Bewahren Sie Ihre Variablen in einem einzigen globalen Bereich auf
  4. Halten Sie Ihre SQL-Anweisungen in Variablen oder Speicherprozeduren, niemals inline
  5. Bewahren Sie Ihre Variablenwerte in einem Konfigurationsspeicher auf, vorzugsweise in einer SQL-Datenbank
90
Kevin D. White

Ich habe mehrmals versucht, SSIS zu verwenden und habe es aufgegeben. IMO ist es viel einfacher, einfach alles zu tun, was ich in C # brauche. SSIS ist zu komplex, hat zu viele Fallstricke und ist es einfach nicht wert. Es ist viel besser, mehr Zeit für die Verbesserung der C # -Fähigkeiten zu verwenden als dieselbe Zeit für das Erlernen von SSIS - Sie erhalten viel mehr Rendite für Ihr Training.

Auch das Auffinden und Verwalten von Funktionen in einer VS-Lösung ist sehr viel einfacher. Unit Testing mit VS ist einfach. Ich muss nur die Quelle in Subversion einchecken und überprüfen, wie sie geladen wurde. Unit-Tests von SSIS-Paketen sind, gelinde gesagt, sehr aufwendig.

Außerdem gab es Situationen, in denen SSIS einige Spalten in einigen Zeilen nicht automatisch füllte und sie nur übersprang, ohne Ausnahmen auszulösen. Wir haben viel Zeit damit verbracht, Fehler zu beheben und herauszufinden, was los ist. Die Entwicklung einer alternativen Lösung in C # dauerte weniger als eine Stunde und verlief zwei Jahre lang problemlos.

49
A-K

Meiner Meinung nach ist SSIS nur für ETL-Vorgänge vorgesehen und sollte keine Logik außerhalb dieses Bereichs enthalten.

14
Christoph

Ich hatte die unglückliche Erfahrung, an einem Projekt zu arbeiten, bei dem wir der Meinung waren, dass SSIS eine ausreichend gute Lösung ist, um Daten aus mehreren Quellen zu aggregieren und zu kombinieren. Das Unglückliche war, dass es zuerst großartig funktionierte, sich dann aber die Anforderungen änderten und wir (irgendwann) realisierten, dass es das falsche Werkzeug war.

vielleicht haben wir es nur falsch verwendet, aber wir hatten große Schwierigkeiten, wenn wir jemals unser Schema geändert haben. Schließlich haben wir unsere ORM-Definitionen vom Front-End erneut verwendet, um ein benutzerdefiniertes Tool in C # zu schreiben, um dies zu tun. Da wir bereits das Datenmodell hatten, war dies überraschend einfach. YMMV und ich sind natürlich kein SSIS-Experte, aber in diesem Fall verursachte SSIS viel Doppelarbeit und Kopfschmerzen, als wir nur die Ärmel hochkrempelten und „handcodierten“, es war einfacher als erwartet.

Daher würde ich viel über Flexibilität nachdenken, wenn ich über SSIS nachdenke.

11
luke

SSIS hat seinen Platz, und dieser Platz ist keine allgemeine Programmierung oder ein Ersatz für gespeicherte Prozeduren. Es kommt von der ETL-Schule (Extrahieren, Transformieren und Laden) und dort ist seine Stärke.

Der alte Name (DTS, Data Transformation Services) und der neue Name (SSIS, SQL Server Integration Services) verdeutlichen, dass es sich um einen Dienst (oder eine Reihe von Diensten) handelt, mit dem Daten bearbeitet werden, um die SQL Server-Datenbank in größere Prozesse zu integrieren.

6
DaveE

Wenn Sie Ihre Daten programmgesteuert verschieben möchten, sollten Sie sich Rhino ETL ansehen.

Ich arbeite auch an meinem eigenen Framework Fluent ETL , da SSIS für einfache Datenaufgaben im Zusammenhang mit der Entwicklung, wie das Laden von Unit-Test-Daten aus einer CSV-Datei, etwas zu kompliziert ist.

4
Jerome

SSIS ist kein Programm. Viele Dinge sind in SSIS schneller zu erledigen, und Sie erhalten als Administrator sehr nette detaillierte Fortschritts- und Fehlerinformationen - was in den Szenarien, die SSIS lösen soll, sehr gut sein kann, weil manchmal etwas schief geht und der Administrator viel braucht Information.

Abgesehen davon ist SSIS nicht wirklich nützlich, wenn Sie das Zeug nicht selbsterklärend haben - sie sind für etwas gedacht, zu viel in die allgemeine Programmierung zu bringen macht sie nervös.

3
TomTom