2016-07-30 9 views
0

In der Anfangsphase befand sich das Paket im Paketbereitstellungsmodell (SSIS 2008), das die Daten parallel aus einer lokalen Datenbank in eine lokale CSV-Datei exportiert.SSIS 2012 Paket hängt nach dem Zufallsprinzip

Ich habe es in Project Deployment Model konvertiert und jetzt die gleiche Parallelität existiert aber durch Aufrufen eines untergeordneten Pakets (mit 26 Threads) durch Ausführen von Package Task (früher war es durch Execute Process Task) mit der Execute-Out-of -Process in-order, um die Ressourcen zu verwenden

Das untergeordnete Paket wählt einen zufälligen Kunden aus 15K-Kunden aus und exportiert seine zugehörigen Daten aus einer Ansicht in die CSV-Datei.

<> Der Kunde in einer Tabelle angeordnet sind, und alle Fäden lesen die Tabelle und ein Mutex über sie angelegt wird, um die TABLOCKX verwenden, je nachdem, welcher Thread bekommt den Schreibzugriff wird zuerst die Kunden Abhol- und modifiziert die Lade den Status auf 'Fortschritt'. Die anderen Threads, die auf den Schreibzugriff warten, folgen demselben Prozess.

Der Prozess in jedem Thread wird für alle Kunden, die „forloop“ Container

Für die 576 Hinrichtung wiederholt, es gut exportiert und schnell, aber überraschend hängt er an der 576. Ausführung eines zufälligen Kunden für mehrere Minuten . Ich habe versucht, es mehrere Male zu wiederholen und es hängt an der gleichen Stelle auf.

Ihre Hilfe zu diesem wird sehr geschätzt!

PS: Das Problem ist nicht, dass es in der früheren Version von meinem Paket

+0

gelöst. Können Sie erklären, welche SSIS-Aufgaben, SQL-Abfragen und Ausdrücke die zufälligen Kunden bitte auswählen. Ist es beispielsweise ein Schleifencontainer mit einer SQL-Aufgabe? –

+0

Stellen Sie sich vor, Sie versuchen, dies zu lösen, wäre die angegebene Information ausreichend – TheGameiswar

+0

Überwachen Sie bestehende Verbindungen zu Ihrem SQL Server? Schließen Sie jede CSV-Datei sauber? –

Antwort

0

Es ist ein Fehler in SSIS 2012 wegen der meines migrierte Paket Hangs.

SSIS-Paket mit mehreren untergeordneten Paketen, wenn alle gleichzeitig ausgeführt werden, erstellt ein Deadlock in den internen Katalogtabellen. Daher sollte das Ausführen eines untergeordneten Pakets mit mehreren parallelen Threads vermieden werden. Führen Sie sie bei Bedarf mit wenigen Millisekunden Verzögerung (> 100 ms) aus.

Das Hinzufügen einer Verzögerung löste das Problem. Ich hoffe, dieser Fehler wird von Microsoft in den späteren Versionen von SSIS