Несоответствие длины строковых данных delphi + sql server 2008

В одном из моих приложений я использую Delphi 7, Sql server 2008 R2, BDE, я подключаю базу данных с помощью bde через odbc, используя собственный клиентский драйвер сервера Sql.

Вставка всегда работает, но в некоторых местах редактирование не удается, Delphi вызывает ошибку EDBEngineError [Sql native client 10.0] Несоответствие длины строковых данных.

У меня есть 4 текстовых поля (тип данных sql TEXT) в таблице, если я прокомментирую эти строки полей, редактирование работает.

Пожалуйста, помогите решить эту проблему?

Я знаю, что BDE обесценился, но это миграция базы данных. это большое приложение, поэтому я не хочу переходить с BDE. Все работает нормально, кроме вышеуказанной ситуации.

[извините за мой плохой английский]


person bejarun    schedule 25.01.2013    source источник


Ответы (1)


Боюсь, причина здесь в BDE. BDE никогда не предназначался для работы с SQL Server 2008 или новее. У нас недавно была аналогичная проблема с informix (нарушения доступа, которые также были связаны с неправильной длиной строки).

Что вы могли бы сделать, чтобы действительно быть уверенным, что проблема в BDE, - это захватить sql-оператор, который получает ошибку длины строки, и выполнить тот же SQL, используя ODBC-драйвер напрямую, без промежуточного уровня BDE (например, из некоторого SQL -редактор, подключающийся через ODBC). Бьюсь об заклад, ты больше не понимаешь проблемы.

person Copilot    schedule 25.01.2013
comment
проблема возникает только в одной таблице, я не мог ничего сделать без BDE, это только 4 поля создают проблему. иначе я буду использовать только запрос на обновление для этих полей. я попробую себя и вернусь. - person bejarun; 27.01.2013