SQL-Job, der SSIS ausführt - Die Cursoroperation konnte nicht abgeschlossen werden, da das Tabellenschema nach der Deklaration des Cursors geändert wurde

8

Ich habe versucht, dieses Problem für ein paar Tage zu lösen, aber keine der Probleme bei der Suche im Internet erklärt direkt, warum ich diesen Fehler bekomme, da auf diesem Paket kein Cursor ausgeführt wird.

Ich habe einen SQL-Job, der ein SSIS-Paket ausführt - Dieses Paket wird hier ziemlich ausführlich erklärt:

Wie oben gezeigt, gibt es eine Reihe von Schemaänderungen, die letztendlich erklären könnten, warum ich diesen Fehler erhalte, aber dieser Fehler scheint niemals aufzutreten, wenn die Pakete manuell und nur über den SQL-Job ausgeführt werden. Es scheint auch spontan zu geschehen, eines Tages funktioniert es, dann gibt es mir folgenden Fehler:

  

Microsoft (R) SQL Server führt Package UtilityVersion 10.50.4000.0 für 64-BitCopyright (C) Microsoft Corporation 2010 aus. Alle Rechte vorbehalten.Started: 04:30:00 AMError: 2016-11-11 04: 31: 35.91 Code : 0xC0202009 Quelle: Laden in die Staging-Datenbank Laden in die Staging-Datenbank [114] Beschreibung: SSIS-Fehlercode DTS_E_OLEDBERROR. Ein OLE DB-Fehler ist aufgetreten. Fehlercode: 0x80004005.Es ist ein OLE DB-Datensatz verfügbar. Quelle: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Beschreibung: "konnte Cursor-Operation nicht abschließen, da das Tabellenschema geändert wurde, nachdem der Cursor deklariert wurde." End ErrorError: 2016-11-11 04: 31: 35.92 Code: 0xC0209029 Quelle: Laden in die Staging-Datenbank Laden in die Staging-Datenbank [114] Beschreibung: SSIS-Fehlercode DTS_E_INDUCEDTRANSFORMFAILUREONERROR. Die "Eingabe" OLE DB-Zieleingabe "(127)" ist fehlgeschlagen, weil der Fehlercode 0xC020907B aufgetreten ist, und die Fehlerreihenanordnung bei "Eingabe" OLE DB-Zieleingabe "(127)" gibt Fehler bei Fehler an. Beim angegebenen Objekt der angegebenen Komponente ist ein Fehler aufgetreten. Möglicherweise gibt es Fehlermeldungen, die zuvor mit weiteren Informationen zu dem Fehler angezeigt werden. End ErrorError: 2016-11-11 04: 31: 35.92 Code: 0xC0047022 Quell: in Staging-Datenbank laden SSIS.Pipeline Beschreibung: SSIS-Fehlercode DTS_E_PROCESSINPUTFAILED. Die ProcessInput-Methode für die Komponente "Load in Staging Database" (114) ist beim Verarbeiten des Eingangs "OLE DB Destination Input" (127) mit dem Fehlercode 0xC0209029 fehlgeschlagen. Die identifizierte Komponente hat einen Fehler von der ProcessInput-Methode zurückgegeben. Der Fehler ist spezifisch für die Komponente, aber der Fehler ist schwerwiegend und führt dazu, dass die Datenflusstask nicht mehr ausgeführt wird. Es kann Fehlermeldungen geben, die vorher mit mehr Information über den Fehler bekanntgegeben werden. End ErrorError: 2016-11-11 04: 31: 36.06 Code: 0xC02020C4 Quelle: Laden in Staging-Datenbank Abrufen von ITExtr03FinM 1 Beschreibung: Der Versuch, dem Datenflusstaskpuffer eine Zeile hinzuzufügen, ist mit dem Fehlercode 0xC0047020.End ErrorError: 2016-11-11 04: 31: 36.11 Code fehlgeschlagen : 0xC0047038 Quelle: In Staging-Datenbank laden SSIS.Pipeline Beschreibung: SSIS-Fehlercode DTS_E_PRIMEOUTPUTFAILED. Die PrimeOutput-Methode für die Komponente "Retrieve ITExtr03FinM" (1) hat den Fehlercode 0xC02020C4 zurückgegeben. Die Komponente hat einen Fehlercode zurückgegeben, als die Pipelineengine PrimeOutput () aufgerufen wurde. Die Bedeutung des Fehlercodes wird durch die Komponente definiert, aber der Fehler ist fatal und die Pipeline wurde nicht mehr ausgeführt. Möglicherweise gibt es Fehlermeldungen, die zuvor mit mehr Informationen zu dem Fehler angezeigt werden. End ErrorDTExec: Die Paketausführung gab DTSER_FAILURE (1) .Started zurück: 04:30:00 AMFinished: 04:31:36 AMElapsed: 95,859 Sekunden

Der obige Fehler erwähnt Load into Stageing Database - Folgendes ist in dieser Datenflusstask enthalten:

Kann jemand diese Anomalie erklären und gibt es einen Weg dazu?

    
PKirby 11.11.2016, 09:01
quelle

2 Antworten

4

Beim Lesen des Fehlers glaube ich, dass der Schlüssel zur Beantwortung Ihrer Frage nicht der Cursor ist, sondern diese Teile des Fehlers:

  • Die PrimeOutput-Methode für die Komponente "Retrieve ITExtr03FinM" (1) hat den Fehlercode 0xC02020C4
  • zurückgegeben
  • DTS_E_PRIMEOUTPUTFAILED
  • Laden in Staging-Datenbank Abrufen von ITExtr03FinM 1 Beschreibung: Der Versuch, eine Zeile zum Datenflusstaskpuffer hinzuzufügen, ist mit dem Fehlercode 0xC0047020 fehlgeschlagen

Diese Diskussion auf SqlServerCentral schlägt RAM / Memory Buffer-Konfiguration als ein Problem vor Ссылка

dieser Link schlägt ein 32 vs 64-Bit-Problem vor. Verwenden Sie 64 Bit lokal und 32 Bit auf Ihrem Server? SSIS-FEHLER: Der Versuch, dem Datenflusstaskpuffer eine Zeile hinzuzufügen, ist mit dem Fehlercode 0xC0047020

fehlgeschlagen

Ich habe ein paar weitere Links gefunden, die auf RAM als Problem hindeuten, was dazu führen würde, dass es sich um ein Problem auf einer Maschine handeln würde, aber nicht um eine andere, weil die Konfigurationen anders wären. Auch wenn Sie das Paket während einer starken Nutzungszeit des Servers ausführen, wäre weniger Speicher für Ihre Operationen verfügbar.

    
Matt 16.11.2016, 19:54
quelle
2

Überprüfen Sie den Zeitplan anderer SQL-Agent- und Wartungsaufgaben auf Ihrem Server, insbesondere um 4:30 Uhr morgens. Die konsistenteste Zeit, in der Ihr Paket versagt, ist 4:30 Uhr morgens und ich wette, es gibt entweder ein Reindex, ein Stats-Update oder ein anderes Paket, das gleichzeitig mit Ihrem Paket in Konflikt steht.

Es könnte auch eine Replikation auftreten, die ebenfalls mit Ihrem Paket in Konflikt steht.

    
DForck42 15.11.2016 14:41
quelle

Tags und Links