Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
Всем доброго дня!

Помогите разрешить ситуЁвину:

Есть большое приложение на BDE + DELPHI + MS SQL 2000. Причем алиас использует драйвер MSSQL (BORLAND).

Я хочу заменить Native MSSQL в BDE на ODBC драйвер (так в 10 раз быстрее).
Механически все получается (замена на ODBC), но при запуске приложения возникают проблемы с параметрами и типами полей.

Существует ли методика для того, чтобы запустить приложение ?

WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 11:15    [401155]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Про проблему с типами полей можно по побробней?
31 окт 03, 11:21    [401178]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
2pkarklin:

Я так понял, что через BDE-драйвер строковые столбцы распознаются Delphi как TStringField. Через ODBC это же поле надо прописывать как TMemoField.

p.s. Таблица возвращается хранимкой.


WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 11:29    [401208]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Если это действительно так, то придеться типы полей менять. Но лучше приведи сообщение об ошибке. И какую длину имеют эти поля. Но вообще-то твой переход на работу через BDE на ODBC, IMHO, не оправдан.
31 окт 03, 11:33    [401228]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
Почему не оправдан ?
У меня специфика - приложение будет работать на хилом канале < 64Кбит/сек.

Можешь посмотреть мой топик про ADO и BDE - там я привел тесты на хилом канале для двух методов. ODBC по скорости очень близко к ADO.

Может есть другие причины? Если есть, пиши, обсудим.
Спасибо

WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 11:43    [401258]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Да я уже тебе писал и в том топике тоже, что результаты твоего теста, мягко говоря, не внушают доверия.
31 окт 03, 11:45    [401261]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
УПС.. :)
Это ладно, тест тестом, но дело сейчас в ODBC.
А сообщение об ошибке вот такое:

SQLProc1: Type mismatch for field 'Value', expecting: String actual: Memo.

WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 11:48    [401272]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Ну вот, разная трактовка типов. Надо менять в клиентской программе. Или кастить в хп. Длина поля какая?
31 окт 03, 11:51    [401283]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
Длина поля я не знаю какая.
У меня таких запросов/хранимок около 300 :(
А что меняет длина поля?
WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 12:47    [401428]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Интересно, почему тип поля Memo становиться. А по поводу работы BDE могу сказать, что на 64К канале работали и ничего, никаких проблем не было.
31 окт 03, 12:53    [401445]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
Это вопрос открытый.

А как конфигурили BDE ? Какой драйвер в алиасе был прописан? MSSQL ?

WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 12:56    [401455]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Да. Работали через DB-Library.
31 окт 03, 13:02    [401479]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
Странно.
А как большые объемы качались ? примерно 700-2000 КБ ?
WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 13:03    [401483]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
А покой ляд клиенту такие объемы за раз понадобились?
31 окт 03, 13:04    [401488]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
Ну понадобились, что же делать :)

WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 13:11    [401514]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Но тогда пусть ждут. 2 мега по 64к нужно время.
31 окт 03, 13:23    [401557]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
Статистика:
Время в секундах, размеры в байтах

Time Send Recieve Speed
BDE 53.3 2239 81510 1529.268293
ADO 6.1 3954 87218 14298.03279
Kernel 53.8 2463 83056 1543.791822
BDE+ODBC 221.05 2928780 13249.40059

WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 13:26    [401567]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Да нет, не подумай чтоя против. Давай, переходи.
31 окт 03, 13:28    [401579]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
:-)
Осталось только проблему решить с полями и парметрами...
Жаль что ни кто, кроме тебя, не ответил.
Такое впечатление что перехода с BDE Native к BDE ODBC не делал :(

WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 13:35    [401610]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Да ты пойми, что такой переход делать смысла нет. Но разве тока в "ускорении" передачи данных. Есть смысл полностью уходить от BDE.
31 окт 03, 13:37    [401616]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
Это понятно, что платформу надо уже выбирать другую и полностью пересматривать подход к построению системы.
Но сейчас мне надо решить проблему с пропускной способностью и достаточно быстро.

Я так понимаю что тема закрыта по причине неактуальностью. :-(
WBR
Andrey V. Sobolev
s_andrey@mail333.com
31 окт 03, 13:44    [401642]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Я так понимаю что тема закрыта по причине неактуальностью. :-(

Скорее всего да. Избаловали нас скоростные каналы. :-)
31 окт 03, 13:45    [401648]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
BrokenPot
Member

Откуда: Киев
Сообщений: 1405
Если тип *char(256) или длиннее, то BDE его интерпретирует, как мемо.

Можно сделать

select cast ( [имя_поля] as varchar(255) ) as [имя_поля] ...

:)
31 окт 03, 16:47    [402102]     Ответить | Цитировать Сообщить модератору
 Re: BDE через ODBC  [new]
Andrey Sobolev
Member

Откуда: Москва
Сообщений: 416
Я посмотрел что возвращает мой запрос.
Возвращается поле длиной 8000 символов.
И в тексте есть преобразование
Strings.Add(FieldByName('keyValue').AsString);
Вот на этом преобразовании все и сыпется.
Как это можно обойти, если не секрет ?

WBR
Andrey V. Sobolev
s_andrey@mail333.com
3 ноя 03, 11:11    [403519]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить