Die SSIS-Datenflusstask hängt von der Ausführung der Pre-execute-Phase ab
Habe ich einen Data Flow Task, der hängt auf Ausführung.
Der flow ist einfach, macht zwei Abfragen auf verschiedene Tabellen (mit ein paar joins), anschließend sortiert und führt die otuputs durch eine gemeinsame id, fügt eine statische Spalte, um alle Datensätze, speichert der Zeilenanzahl in einer user-Variablen für die spätere Verwendung und schließlich fügt in einer Tabelle auf eine andere DB.
Wir sind mit OLE-DB-Quellen-und Ziel. Quelle MSSQL 2000 und das Ziel einer MSSQL 2012
Symptome:
- Wenn excecuting, die Daten Fließen, bekommt die üblichen gelben "ausführen" - Symbol. Allerdings, wenn Sie auf doppelklicken, um die Daten Fließen, nicht von den Elementen haben, die alle gelb, rot oder grün zu markieren.
- Dies geht für längere Zeit, bei der ersten dauerte es rund 20 Minuten, danach fing es immer mehr oder einfach nicht wieder auf alle.
- Ausgabe zeigt:
Information: 0x40043006 beim Laden Sandbox-Tabelle, SSIS.Pipeline: in Vorbereitung für die Execute-phase beginnt.
Informationen: 0x40043007 beim Laden Sandbox-Tabelle, SSIS.Pipeline: Pre-Execute-phase ist Anfang.
Und nichts mehr, bis die Ausführung beendet ist. - Ja, das hat vorher funktioniert. Und ja, wir haben nur eine einzige Abfrage (gespeicherte Prozedur), um dies zu tun ETL-aber wir wollten migrieren die Schritte, die zur SSIS.
Fehler-Lösungen:
- Es gibt keine Anfragen.
- Standard-Puffergröße für die task-flow wurde erhöht 40485760 dann 80971520.
- Standard-Puffer max Zeilen für die Aufgabe wurde auf 1000000.
- Verzögerung Validierung wurde auf True festgelegt, für die Aufgabe.
- Alle Elemente in der Aufgabe festgelegt wurden, Überprüfen Externe Daten auf False.
- Beide Anfragen hatten:
SET FMTONLY OFF;
SET NOCOUNT ON;
Hinzugefügt am Anfang. - Beide Abfragen hatte MAXDOP auf 1 gesetzt.
- Einstellung Projekt Laufen 64-bit-Laufzeit auf False.
- Geändert destination load von Platz für eine Tabelle oder Sicht , Platz für eine Tabelle oder Sicht - Schnelles laden mit keine sperren oder Einschränkungen.
- Festlegen der Zeilen pro batch bis 1000 für schnelles laden.
- Einige arbeiten umgehungslösungen vorschlagen, trennen Sie die Aufgabe, die Strömung in zwei oder mehr task flows. Aber dies ist nicht möglich, da das, was wir tun müssen, ist ein Zusammenführen der Informationen auf dem Quell-Abfragen.
Extra-bits:
Ich hoffe wirklich, dass mir jemand helfen kann. Ich bin ziemlich neu in SSIS, dies ist das erste mal ich es verwenden. Normalerweise arbeite ich mit Pentaho für meine ETL, aber der Kunde braucht die Lösung implementiert werden, die auf SSIS. Ich habe gekämpft, mit diesem Problem für ein paar Tage jetzt, und ich fange an, die Ideen ausgehen, um es zu lösen.
Wenn lief über die Befehlszeile es klemmt auch und ich bekomme die folgende Ausgabe:
Progress: 2013-03-19 14:36:26.21
Source: Load Sandbox Table
Validating: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.21
Source: Load Sandbox Table
Validating: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.22
Source: Load Sandbox Table
Validating: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.22
Source: Load Sandbox Table
Validating: 37% complete
End Progress
Progress: 2013-03-19 14:36:26.23
Source: Load Sandbox Table
Validating: 50% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 62% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 75% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 87% complete
End Progress
Progress: 2013-03-19 14:36:26.25
Source: Load Sandbox Table
Validating: 100% complete
End Progress
Warning: 2013-03-19 14:36:26.26
Code: 0x80047076
Source: Load Sandbox Table SSIS.Pipeline
Description: The output column "ITEM_OID (1)" (47) on output "Merge Join Outp
ut" (28) and component "Merge Join" (11) is not subsequently used in the Data Fl
ow task. Removing this unused output column can increase Data Flow task performa
nce.
End Warning
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 37% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 50% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 62% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 75% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 87% complete
End Progress
Progress: 2013-03-19 14:36:26.27
Source: Load Sandbox Table
Prepare for Execute: 100% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 0% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 12% complete
End Progress
Progress: 2013-03-19 14:36:26.31
Source: Load Sandbox Table
Pre-Execute: 25% complete
End Progress
Progress: 2013-03-19 14:36:26.34
Source: Load Sandbox Table
Pre-Execute: 37% complete
End Progress
Progress: 2013-03-19 14:36:45.69
Source: Load Sandbox Table
Pre-Execute: 50% complete
End Progress
Danach friert es wieder.
LÖSUNG (dieses Posting hier, denn ich kann keine Antwort auf meine eigene Frage noch 5 Stunden, ich werde es tun, wenn ich das darf.)
Ich habe es endlich.
Es stellt sich heraus, es ist ein Problem mit der Validierung, aber nicht nur SSIS-Elemente gehen durch, dass die überprüfung, wie es in der vierten fehlgeschlagen Lösung der Frage.
Die VERBINDUNGEN werden ebenfalls erhalten, validiert und haben Ihre eigenen Delay-Validation-Eigenschaft muss auf true festgelegt werden.
Nach der Ausführung Zeit ging von 40+ Minuten oder keine ausgeführt wird, um weniger als eine minute für den gesamten Prozess (Dies ist nur ein Schritt eines viel größeren Prozesses)
Ich hoffe, dass die Leute mit diesem problem finden diese Lösung einfach, denn es gibt eine Menge Leute, die laufen in dieses problem und fast keine Lösungen online veröffentlicht werden.
In einer nussschale: Überprüfen Sie, ob alle Elemente an der Aufgabe beteiligt, einschließlich die DB-verbindungen Verzögerung Überprüfung-Eigenschaft auf True festgelegt.
InformationsquelleAutor der Frage Ryoku | 2013-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es endlich.
Es stellt sich heraus, es ist ein Problem mit der Validierung, aber nicht nur SSIS-Elemente gehen durch, dass die überprüfung, wie es in der vierten fehlgeschlagen Lösung der Frage.
Die VERBINDUNGEN werden ebenfalls erhalten, validiert und haben Ihre eigenen Delay-Validation-Eigenschaft muss auf true festgelegt werden.
Nach der Ausführung Zeit ging von 40+ Minuten oder keine ausgeführt wird, um weniger als eine minute für den gesamten Prozess (Dies ist nur ein Schritt eines viel größeren Prozesses)
Ich hoffe, dass die Leute mit diesem problem finden diese Lösung einfach, denn es gibt eine Menge Leute, die laufen in dieses problem und fast keine Lösungen gepostet online.
In einer nussschale: Überprüfen Sie, ob alle Elemente an der Aufgabe beteiligt, darunter die DB-verbindungen Verzögerung Überprüfung-Eigenschaft auf True festgelegt.
InformationsquelleAutor der Antwort Ryoku
Ich habe die gleichen Symptome aber die Verzögerung validation auf True die einzelnen Komponenten nicht mein problem gelöst.
Ich löste es, indem Sie die OLE DB-Methode aus Tabelle oder Sicht zum sql-Befehl.
Grüße.
InformationsquelleAutor der Antwort Hercule
Behoben, mein problem durch eine änderung der datenzugriffsmodus auf SQL-Befehl und einfügen meiner Ansicht in die SQL-Befehl text in die OLE DB-Quelle.
InformationsquelleAutor der Antwort user2389616
Ich weiß, das ist alt, aber ich habe gerade einen link zu dieser, die helfen können. Ich persönlich bin mit einem Blick auf nur den export von Daten zu einer externen Datenbank, und die
die Validierung von Daten ist die Einnahme eine übermäßige Menge an Zeit, die Validierung der Ansicht.
https://connect.microsoft.com/SQLServer/feedback/details/258901/ssis-views-as-data-source-very-poor-performance-or-ssis-hangs
der wichtige Teil dabei ist Microsofts Antwort
InformationsquelleAutor der Antwort KySoto
Andere Sache, zu versuchen, ist anscheinend das Kontrollkästchen "Verwenden Sie 32-bit runtime" aktivieren--das ist, wenn Sie sehen, das problem bei der Ausführung des Pakets als einen job in Ihrer DB-server (das ist 64-bit, und in meinem Fall zumindest, SQL-Server 2008R2). Gehen Sie zu dem job, Rechtsklick > Eigenschaften > Schritte > rechts-Klick auf das SSIS-Paket Schritt - > Eigenschaften > Allgemeine > Ausführung Optionen (Registerkarte) > Verwenden Sie 32-bit-Laufzeitumgebung.
War ich zu sehen, dieses problem, aber nur sobald ich das Paket bereitgestellt, um die server (ich hatte einen logging provider aktiviert, so konnte ich sehen, es stecken nach der "Pre-Execute" - phase). Es lief immer Prima in das Angebot (und in Ordnung, auf einem anderen server, seltsam...noch nicht sicher, warum das so ist).
Einen thread hier kippte mich aus dieser Lösung, die zu funktionieren scheint-obwohl mein problem zeigt sich nur zeitweise, so YMMV. Es gibt auch andere mögliche Lösungen, die in diesem thread als gut.
InformationsquelleAutor der Antwort S'pht'Kr
Hoffe, das jemand hilft.
Ich habe versucht, verwenden Sie diese OLE DB-Quelle zum ausführen einer SP mit einem param.
Ich brauchte es nicht, um etwas zurückzugeben, so verließ ich das Teil aus.
Aber es ließ mich nicht, er schrie, 'Nein Spalteninformationen zurückgegeben wurde durch die sql '. So konfiguriert eine dummy-sql-Anweisung in meine SP, die ich nie wahr.
Doch dazu kam es nicht, die Spalte als Ausgabe und der job hing am pre-execution-phase. Also änderte ich den test immer wahr sein, wird es wieder in die Spalte, und presto. Ich habe nichts zu tun mit der Säule, aber ich denke, es ist Bedarf da.
InformationsquelleAutor der Antwort TheBigRedCup
Hatten wir bereits unsere Verspätete Validierungen festgelegt
True
und konnte/wollte nicht zu ändern, um eine SQL-Anweisung.Ich kam in
ValidateExternalMetadata
in der Datenbewegungen, die ich geändert, umFalse
und das scheint zu arbeiten wie ein Weltmeister.Ich überprüfte OP - Schritte und er erwähnt, Taten Sie das in Schritt 5
InformationsquelleAutor der Antwort Sam
Ich lief in das gleiche Problem vor ein paar Minuten und die Vorschläge oben hat bei mir nicht funktioniert (Verzögerung Validierung = true scheint zu sein, die gehen zu beantworten). Wir haben vor kurzem entdeckt, einige Probleme mit parameter sniffing und einmal habe ich behoben, in meinem gespeicherte Prozeduren, mein Paket lief in < 1 min. Betrachten Sie die überprüfung Ihrer gespeicherten Prozeduren, um zu sehen, ob das vielleicht die Ursache sein.
InformationsquelleAutor der Antwort user2209098
Dieses problem ist immer noch aktiv mit SQL Server 2012/2014.
Keine der Lösungen oben genannten geholfen. In der Tat, änderte sich nichts verzögern, die Validierung, die änderung der Konfiguration des ALTEN DB-Ziel-oder OLE-DB-Verbindung.
Lesen der thread aus diesem link: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/35a484c7-4850-4f86-b14a-5dfb50491ab2/long-duration-preexecute-phase?forum=sqlintegrationservices
es wird vorgeschlagen, dass das problem mit der Ausführung plan.
Gilt dies für meinen Fall und das hinzufügen der Bedingung 1=1 zu meinem OLE-DB-Quelle-Konfiguration gezwungen SQL server zum generieren eines neuen Ausführungsplan, der das Problem für mich.
InformationsquelleAutor der Antwort Ylli Prifti