Ошибка при экспорте поля clob из оракула в текстовое поле в базе данных Azure.

У меня есть поле CLOB в таблице Oracle, в которой хранится файл PDF. Когда я пытаюсь экспортировать это поле в базу данных SQL Server в Azure, я получаю эту ошибку:

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, все работает нормально.

Как решить эту проблему?

ОБНОВЛЕНИЕ 1

Я понял, что как раз тогда, когда я устанавливаю «Размер фиксации» больше 15 и устанавливаю значение «Использовать пакетное обновление для вставок» на моем шаге TableOutput, возникает проблема.


person Renatto Machado    schedule 19.01.2017    source источник
comment
Хорошо, я укушу... Почему вы храните файл PDF в столбце (поле) CLOB? CLOB предназначен для длинных текстовых строк. Они подвержены преобразованиям текста (явно, но также и неявно). Текст может храниться по-разному в Oracle и в SQL Server, и процедура экспорта вносит необходимые изменения. Это то, что вы хотите? Сомнительно! (Это согласуется с SQL Server -> SQL Server не вызывает проблем, поскольку это одна и та же система). Файл PDF — это не длинная текстовая строка. Вы имели в виду БЛОБ?   -  person mathguy    schedule 29.01.2017
comment
Слушай, моя проблема не в типе данных. Моя проблема - прерванное соединение с базой данных Azure SQL Server. Это происходит независимо от типа данных.   -  person Renatto Machado    schedule 30.01.2017
comment
Вот почему я спросил в комментарии, а не предложил это в качестве ответа. С учетом сказанного, не будьте так уверены, что это не попытка манипулировать файлом PDF, как если бы это был текст, который приводит к сбою вашего соединения! Что происходит, когда вы пытаетесь выполнить тот же процесс на столбце CLOB — сталкиваетесь ли вы с той же проблемой с прерванным соединением?   -  person mathguy    schedule 30.01.2017
comment
@mathguy посмотрите Обновление 1, проблема возникает и без PDF.   -  person Renatto Machado    schedule 31.01.2017


Ответы (1)


Вы можете попробовать изменить параметры 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
person ErikEJ    schedule 26.01.2017