# MS SQL: Insert LOB



## bronks (19. Dez 2012)

Hi!

Ich habe folgendes Problem: In eine Tabelle, auf einem MS SQL Server 2005, soll eine Datei geschrieben werden. Grundsätzlich funktioniert es, aber ab einer Dateigrösse von 9 MB erhalte ich folgende Exception:


```
com.microsoft.sqlserver.jdbc.SQLServerException: String or binary data would be truncated.
```

Jetzt der Brüller: Das eine einzige Feld der Tabelle hat den Typ: varbinary(*max*)

Wer kennt das Problem und was kann man dagegen tun?

Schönen Gruß

Bronks



```
...

String sql = "" 
                +"INSERT " 
                +"INTO    [Testtabelle] " 
                +"        ( [FileData] ) " 
                +"        VALUES " 
                +"        ( ? )   ";

...

st.setBinaryStream(1, item.getInputStream(), (int)item.getSize());

...
```


----------



## bronks (20. Dez 2012)

Das Problem lag an nichts von dem, was im OP steht. 

Es lag einmal an der Verkettung total verrückter Umstände und der Tatsache, dass jede Version des MSIE und auch der Firefox wohl Requests anders schickt und entsprechend anders mit Responses umgeht. Es gab eine Browserversion, mit der ich 100te MB hochladen konnte und dann wieder welche, mit denen sich nicht einmal ein Byte gerührt hat.

Echt verrückt ... ...


----------



## tröööt (20. Dez 2012)

moment ... WAT is ab ?

wenn das ganze über java läuft (wobei hier mal schön zu wissen wäre WIE) dann sollte es völlig egal sein ... (btw : wie kommst du hier auf n browser ?) ...

oder verwechselst du hier gerade java mit javascript ?


----------



## bronks (20. Dez 2012)

tröööt hat gesagt.:


> moment ... WAT is ab ? ...wenn das ganze über java läuft (wobei hier mal schön zu wissen wäre WIE) dann sollte es völlig egal sein ... (btw : wie kommst du hier auf n browser ?) ... oder verwechselst du hier gerade java mit javascript ?


Das ist eine WebApp und es werden uploded Files als LOB gespeichert. Für die Zerhackstückelung des Requests verwende ich Apache Commons FileUpload. 

Je nach verwendetem Browser und Remote-/Localzugriff hat es entweder einwandfrei, beschränkt oder garnicht funktioniert.

Letztendlich habe ich das Uploadservlet so umprogrammiert, daß es allen Browsern recht ist.

Doof war, dass ich dem Kunden ein getestetes Programm bereitgestellt habe und es bei diesem garnicht funktioniert hat. Die Ursachensuche war übelst spannend.


----------



## tröööt (20. Dez 2012)

ahhh ... du verwendest also servlets ... also java auf server-seite ... gut ... solche infos sollte man auch mal dazu schreiben ... denn java und file-upload und browser ... das passt bei mir nicht mal mit WebStart zusammen ... denn auch das unterliegt der selben sandbox wie applets ... an die ich zwar zu erst gedacht hab ... aber naja ...

wenn du also ein ganz normales formular hast und dort in FILE-input hast ... tja ... dann dürfte sich das was kommt schon von browser zu browser unterscheiden ... und dementsprechend muss man auf server-seite natürlich drauf reagieren ...

mit nem Apache2.2.x und PHP5.x.x ist das kein problem ... da regelt der apache alles und man bekommt nur n pointer auf das temp-file und kann dann damit noch irgendwas machen ...

aber wie das auf app-servern abläuft und welche unterschiede es mit verschiedenen implementierungen gibt weis ich auch nicht


----------

