2017-01-19 1 views
12

J'ai un champ CLOB sur une table Oracle qui stocke un fichier PDF. Lorsque je tente exporter ce champ vers SQL Server sur Azure Db J'ai eu cette erreur:Erreur lors de l'exportation du champ clob d'oracle vers le champ de texte sur 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 

Mais, si je Faire la même transform au serveur SQL local DB, il fonctionne très bien.

Comment résoudre ce problème?

MISE À JOUR 1

Je réalise que juste au moment où je mets « Commit Taille » plus grand que 15 et mis en vrai sur « Utiliser la mise à jour des lots pour les inserts » dans mon TableOutput étape, le problème se produit.

+1

OK, je vais mordre ... Pourquoi vous stockez un fichier PDF dans une colonne CLOB (« terrain »)? CLOB est pour les longues chaînes de texte. Ils sont soumis à des transformations de texte (explicitement mais aussi implicitement). Le texte peut être stocké différemment dans Oracle et dans SQL Server, et une routine d'exportation apportera les modifications nécessaires. Est-ce que c'est ce que tu veux? Douteux! (Cela serait cohérent avec SQL Server -> SQL Server ne causant aucun problème, puisque c'est le même "système"). Un fichier PDF n'est pas une chaîne de texte longue. Voulez-vous dire BLOB? – mathguy

+0

Regardez, mon problème n'est pas le type de données. Mon problème est une connexion interrompue avec Azure SQL Server DB. Cela se produit indépendamment du type de données. –

+1

C'est pourquoi j'ai demandé dans un commentaire et je ne l'ai pas proposé comme réponse. Cela dit, ne soyez pas si sûr que ce n'est pas la tentative de manipuler un fichier PDF comme si c'était du texte qui bloque votre connexion! Que se passe-t-il lorsque vous essayez le même processus sur une colonne CLOB - rencontrez-vous le même problème d'une connexion interrompue? – mathguy

Répondre

0

Vous pouvez essayer de modifier les paramètres TCP sur le client:

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

Je l'ai fait, mais cela ne résout pas mon problème. –