Erreur SqlServer HY000: insertion / mise à jour partielle lors de l'appel de SQLPutData avec un object de plus de 400 Ko dans le champ varbinary (max)

J'ai un gros problème lorsque j'essaie d'save un object de plus de 400 Ko dans une colonne varbinary (max), en appelant ODBC à partir de C ++.

Voici mon stream de travail de base appelant SqlPrepare, SQLBindParameter, SQLExecute, SQLPutData (le dernier plusieurs fois):

SqlPrepare :
StatementHandle 0x019141f0
StatementText "UPDATE DT460 ENSEMBLE DI024543 =?, DI024541 =?, DI024542 =? O WH DI006397 =? ET DI008098 =?"
TextLength 93

Liaison du premier paramètre (champ BLOB):
SQLBindParameter :
StatementHandle 0x019141f0
ParameterNumber 1
InputOutputType 1
ValueType -2 (SQL_C_BINARY)
ParameterType -4 (SQL_LONGVARBINARY)
Taille de colonne 427078
DecimalDigits 0
ParamètreValPtr 1
BufferLength 4
StrLenOrIndPtr -427178 (résultat de SQL_LEN_DATA_AT_EXEC (427078))

SQLExecute :
StatementHandle 0x019141f0

Essayez d'save blob en morceaux de 32 Ko en appelant SQLPutData un certain nombre de fois:
SQLPutData :
StatementHandle 0x019141f0
Adresse DataPtr d'un vector std :: avec 32768 caractères
StrLen_or_Ind 32768

Au cours de la toute première opération SQLPutData avec les premières 32 Ko de données, j'obtiens l'erreur SQL Server suivante:
[HY000] [Microsoft] [Pilote ODBC SQL Server] Avertissement: insertion / mise à jour partielle. L'insertion / mise à jour d'une colonne de text ou d'image n'a pas réussi.
Cela arrive toujours lorsque j'essaie d'save un object d'une taille supérieure à 400 Ko. Sauvegarder quelque chose qui est plus petit que 400KB fonctionne très bien.
J'ai découvert que le paramètre critique est ColumSize de SQLBindParemter. Le paramètre StrLenOrIndPtr lors de SQLBindParameter peut avoir des valeurs plus faibles (comme 32K), il en résulte toujours la même erreur.
Mais selon SQL Server API, je ne vois pas pourquoi cela devrait être problématique tant que j'appelle SQLPutData avec des morceaux de données qui sont plus petits que 32KB.

Est-ce que quelqu'un a une idée de ce que le problème pourrait être?
Toute aide serait grandement appréciée.

Ok, je viens de découvrir que c'était en fait un problème de pilote sql! Après avoir installé la version la plus récente de Microsoft® SQL Server® 2012 Native Client (à l' adresse http://www.microsoft.com/de-de/download/details.aspx?id=29065 ), l'logging de gros BLOB fonctionne exactement avec ces parameters. au dessus.