“La chaîne de données, troncature” avertissement sur une instruction select

Je suis upscaling une base de données access 2003 pour SQL Server Express 2008. Les tableaux semblent être ok créé et les données semblent ok.

J'ai une application MFC qui se connecte à cette base de données. Il a bien fonctionné connexion d'accès, mais lorsque je me connecte à SQL Server, j'obtiens l'erreur suivante sur une instruction select.

DBMS: Microsoft SQL Server
Version: 10.50.1600
ODBC Driver Manager Version: 03.80.0000
Warning: ODBC Success With Info on field 0.
String data, right truncation

State:01004,Native:0,Origin:[Microsoft][ODBC SQL Server Driver]

Les données renvoyées devrait être de 8 caractères, mais est à seulement 7 avec le droit de la plupart des caractères tronqués.

L'accès frontal peut lire les données à partir de SQL Server correctement.

Le champ dans la table SQL Server est défini comme étant de type nvarchar avec une longueur de 8.

Le code pour lire le champ ressemble à quelque chose comme

CDatabase Database;
CString sSerialNumber = "00000000";
CString SqlString;

CString sDsn = "Driver={SQL Server};Server=server\\db;Database=Boards;Uid=uid;Pwd=pwd;Trusted_Connection=False";
Database.Open(NULL,false,false,sDsn);

CRecordset recset( &Database );
SqlString.Format("Select SerialNumber from boards where MACAddress = '%s'",mac);
recset.Open(CRecordset::forwardOnly,SqlString,CRecordset::readOnly);
recset.GetFieldValue("SerialNumber",sSerialNumber);

Après cela, sSerialNumber devrait être 12345678 mais son 1234567

Merci pour l'aide

Pouvons-nous présumer que dans la base de données, SerialNumber est stockée comme 12345678 dans la base de données?
Quel est le bounty? Pour le faire fonctionner sans le nouveau pilote? Pourquoi quelqu'un voudrait-il faire?

OriginalL'auteur JonDrnek | 2010-08-11