2016-11-11 31 views
8

Próbuję rozwiązać ten problem przez kilka dni, ale żaden z problemów podczas wyszukiwania w Internecie bezpośrednio nie wyjaśnia, dlaczego Otrzymuję ten błąd, ponieważ na tym pakiecie nie ma kursora.SQL Job wykonanie SSIS - Nie można ukończyć operacji kursora, ponieważ schemat tabeli zmienił się po zadeklarowaniu kursora

Mam SQL zadanie, które wykonuje pakiet SSIS - Ten pakiet jest dość dużo wyjaśnione tutaj:

enter image description here

Jak pokazuje powyższa, istnieje szereg zmian schematu, co się dzieje, które mogłyby ostatecznie wyjaśnić dlaczego otrzymuję ten błąd, ale ten błąd nigdy nie wydaje się występować, gdy pakiety są wykonywane ręcznie i tylko przez zadanie SQL. Wydaje się też zdarzyć się spontanicznie, jeden dzień to działa, a następnie obok to daje mi ten błąd:

enter image description here

Microsoft (R) SQL Server Execute Package UtilityVersion 10.50.4000.0 for 64-bitCopyright (C) Microsoft Corporation 2010. All rights reserved.Started: 04:30:00 AMError: 2016-11-11 04:31:35.91 Code: 0xC0202009 Source: Load into Stageing Database Load into Stageing Database [114] Description: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005.An OLE DB record is available. Source: "Microsoft SQL Server Native Client 10.0" Hresult: 0x80004005 Description: "Could not complete cursor operation because the table schema changed after the cursor was declared.".End ErrorError: 2016-11-11 04:31:35.92 Code: 0xC0209029 Source: Load into Stageing Database Load into Stageing Database [114] Description: SSIS Error Code DTS_E_INDUCEDTRANSFORMFAILUREONERROR. The "input "OLE DB Destination Input" (127)" failed because error code 0xC020907B occurred and the error row disposition on "input "OLE DB Destination Input" (127)" specifies failure on error. An error occurred on the specified object of the specified component. There may be error messages posted before this with more information about the failure.End ErrorError: 2016-11-11 04:31:35.92 Code: 0xC0047022 Source: Load into Stageing Database SSIS.Pipeline Description: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Load into Stageing Database" (114) failed with error code 0xC0209029 while processing input "OLE DB Destination Input" (127). The identified component returned an error from the ProcessInput method. The error is specific to the component but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.End ErrorError: 2016-11-11 04:31:36.06 Code: 0xC02020C4 Source: Load into Stageing Database Retrieve ITExtr03FinM 1 Description: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020.End ErrorError: 2016-11-11 04:31:36.11 Code: 0xC0047038 Source: Load into Stageing Database SSIS.Pipeline Description: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on component "Retrieve ITExtr03FinM" (1) returned error code 0xC02020C4. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure.End ErrorDTExec: The package execution returned DTSER_FAILURE (1).Started: 04:30:00 AMFinished: 04:31:36 AMElapsed: 95.859 seconds

Powyższy błąd wspomina Load into Stageing Database - w jest zawarty w tej Data Flow Task następujący:

enter image description here

Może ktoś wyjaśnić tę anomalię i czy istnieje sposób wokół to?

+1

Czy wprowadziłeś jakieś zmiany związane z schematem 6 listopada? Czy paczka działała bezbłędnie przed szóstą? Czy sprawdziłeś dziennik zdarzeń, aby sprawdzić, czy istnieje jakieś inne zadanie/proces, który miałby dostęp do pliku lub tabel lub bazy danych w jakikolwiek sposób w tym czasie?A co z obiektami zależnymi w tabeli pomostowej? – rvphx

Odpowiedz

4

Czytając błędu wierzę klucz do odpowiedzi na Twoje pytanie nie znajduje się kursor, ale raczej te części błędu:

  • Sposób PrimeOutput na komponent „Odzyskaj ITExtr03FinM” (1) zwrócony kod błędu 0xC02020C4
  • DTS_E_PRIMEOUTPUTFAILED
  • włó Stageing Pobieranie danych ITExtr03FinM 1 Opis: próba dodać wiersz buforze zadanie przepływu danych nie udało kod błędu 0xC0047020

dyskusja na SqlServerCentral wskazują konfigurację RAM/pamięci buforowej w postaci emisji https://ask.sqlservercentral.com/questions/46865/ssis-data-flow-task-getting-error-code-0xc02020c4.html

link sugeruje problem 32 vs. 64 bitów. Czy używasz 64-bitowego lokalnego i 32-bitowego na swoim serwerze? SSIS ERROR: The attempt to add a row to the Data Flow task buffer failed with error code 0xC0047020

Znalazłem kilka innych linków, które sugerują RAM jako problem, który powodowałby, dlaczego byłby problem na jednym komputerze, ale nie inny, ponieważ konfiguracje byłyby inne. Również jeśli uruchamiasz pakiet podczas intensywnego używania serwera, mniej pamięci będzie dostępne dla twoich operacji.

2

Sprawdź harmonogram innych agentów SQL i zadań konserwacyjnych na serwerze, szczególnie około 4:30. Najbardziej niezmienny czas, w którym pakiet nie działa, to 4:30 rano i założę się, że istnieje reindex, aktualizacja statystyk lub inny taki pakiet działający w tym samym czasie, co powoduje konflikt z pakietem.

Może również występować replikacja będąca w konflikcie z paczką.