2017-01-19 12 views
12

Mam pole CLOB w tabeli Oracle, która przechowuje plik PDF. Kiedy próbuję eksportować to pole do SQL Server Db na Azure mam ten błąd:Błąd podczas eksportowania pola klasy clob z oracle do pola tekstowego na Azure DB

2017/01/19 11:14:32 - ImpostoRenda 2.0 - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : Unexpected batch update error committing the database connection. 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : org.pentaho.di.core.exception.KettleDatabaseBatchException: 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - Error updating batch 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - I/O Error: Connection reset by peer: socket write error 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at org.pentaho.di.core.database.Database.createKettleDatabaseBatchException(Database.java:1379) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at org.pentaho.di.core.database.Database.emptyAndCommit(Database.java:1368) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at org.pentaho.di.trans.steps.tableoutput.TableOutput.dispose(TableOutput.java:575) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:96) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at java.lang.Thread.run(Unknown Source) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - Caused by: java.sql.BatchUpdateException: I/O Error: Connection reset by peer: socket write error 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at net.sourceforge.jtds.jdbc.JtdsStatement.executeBatch(JtdsStatement.java:969) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at org.pentaho.di.core.database.Database.emptyAndCommit(Database.java:1355) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - ... 3 more 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : Unexpected error rolling back the database connection. 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - ERROR (version 6.1.0.1-196, build 1 from 2016-04-07 12.08.49 by buildguy) : org.pentaho.di.core.exception.KettleDatabaseException: 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - Error performing rollback on connection 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - Invalid state, the Connection object is closed. 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at org.pentaho.di.core.database.Database.rollback(Database.java:854) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at org.pentaho.di.core.database.Database.rollback(Database.java:832) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at org.pentaho.di.trans.steps.tableoutput.TableOutput.dispose(TableOutput.java:610) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:96) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at java.lang.Thread.run(Unknown Source) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - Caused by: java.sql.SQLException: Invalid state, the Connection object is closed. 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at net.sourceforge.jtds.jdbc.ConnectionJDBC2.checkOpen(ConnectionJDBC2.java:1699) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at net.sourceforge.jtds.jdbc.ConnectionJDBC2.rollback(ConnectionJDBC2.java:2100) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - at org.pentaho.di.core.database.Database.rollback(Database.java:845) 
2017/01/19 11:14:32 - ImpostoRenda 2.0 - ... 4 more 

Ale, jeśli mogę wykonać to samo przekształcić do lokalnego serwera SQL DB, to działa dobrze.

Jak rozwiązać ten problem?

UPDATE 1

zdałem sobie sprawę, że właśnie wtedy, gdy kładę "Commit Size" większy niż 15 i prawidłowo ustawione na "Użyj aktualizacji partii dla wkładek" w moim TableOutput kroku, pojawia się problem.

+1

OK, będę gryźć ... Czemu zapisywania pliku PDF w kolumnie CLOB („Pole”)? CLOB jest dla długich ciągów tekstowych. Są one przedmiotem transformacji tekstu (jawnie, ale także pośrednio). Tekst może być przechowywany inaczej w Oracle i SQL Server, a procedura eksportu wprowadziłaby niezbędne zmiany. Czy tego chcesz? Wątpliwy! (Byłoby to zgodne z SQL Server -> SQL Server nie powodujący problemów, ponieważ jest to ten sam "system"). Plik PDF nie jest długim ciągiem tekstowym. Miałeś na myśli BLOB? – mathguy

+0

Proszę spojrzeć, moim problemem nie jest typ danych. Mój problem polega na przerwaniu połączenia z serwerem SQL Azure SQL Server. To występuje niezależnie od typu danych. –

+1

Dlatego właśnie zapytałem w komentarzu i nie zaoferowałem go jako odpowiedzi. Mając to na uwadze, nie bądźcie tak pewni, że nie jest to próba manipulowania plikiem PDF tak, jakby to był tekst, który powoduje awarię połączenia! Co się stanie, gdy spróbujesz tego samego procesu w kolumnie CLOB - czy napotkasz ten sam problem z przerwanym połączeniem? – mathguy

Odpowiedz

0

Można spróbować zmodyfikować parametry TCP na kliencie:

REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v KeepAliveTime /t REG_DWORD /d 30000 
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v KeepAliveInterval /t REG_DWORD /d 1000 
REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v TcpMaxDataRetransmission /t REG_DWORD /d 10 
+0

Zrobiłem to, ale to nie rozwiązuje mojego problemu. –

Powiązane problemy