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.
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
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. –
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