2017-01-19 11 views
12

У меня есть поле CLOB в таблице Oracle, в котором хранится файл PDF. Когда я пытаюсь экспортировать это поле в SQL Server Db на Лазурном я получил эту ошибку:Ошибка при экспорте поля clob из oracle в текстовое поле на 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 

Но, если я выполняю то же самое преобразование к локальному SQL Server DB, он отлично работает.

Как это разрешить?

UPDATE 1

я понял, что именно тогда, когда я ставлю «Commit Size» больше, чем 15 и истинна «Использовать обновления для пакетной вставки» в моем TableOutput шаге, то возникает проблема.

+1

Хорошо, я укушу ... Почему ты хранить файл PDF в CLOB колонке («поле»)? CLOB для длинных текстовых строк. Они подвержены текстовым преобразованиям (явно, но также неявно). Текст может храниться по-разному в Oracle и SQL Server, а процедура экспорта внесла необходимые изменения. Это то, что вы хотите? Сомнительно! (Это было бы совместимо с SQL Server -> SQL Server, что не вызывало проблем, так как это одна и та же «система»). PDF-файл не является длинной текстовой строкой. Вы имели в виду BLOB? – mathguy

+0

Слушайте, моя проблема не в типе данных. Моя проблема - это прерванное соединение с Azure SQL Server DB. Это происходит независимо от типа данных. –

+1

Вот почему я спросил в комментарии, и я не предлагал его в качестве ответа. С учетом сказанного не будьте уверены, что это не попытка манипулировать PDF-файлом, как если бы это был текст, который разбивает ваше соединение! Что происходит, когда вы пытаетесь выполнить один и тот же процесс в столбце CLOB - вы сталкиваетесь с той же проблемой прерывания соединения? – mathguy

ответ

0

Вы можете попытаться изменить параметры TCP на стороне клиента:

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

Я сделал это, но это не решило мою проблему. –