Конференция "Gupta/Centura (Gupta Technologies)"

Обсуждение вопросов, связанных с компанией Unify/Gupta (Gupta Technologies), ее продуктами Team Developer, SQLBase и др.

 
 
Добавить сообщение »

Тема: ODBC к Microsoft SQLServer из CTD151

Автор:  Mike Koshelev Дата: 29.12.2000 06:56
>Уважаемые коллеги!
> Наша система использует CTD151 в качестве клиентской части, а в качестве серверной - Micrоsоft SQLServer 7.0/6.5.
>Некоторые запросы, используемые при заполнении таблицы (SalTblPopulate), в который в условии WHERE используются BIND параметры, неправильно транслируются в вид, исполняемый на SQLServer ( ловится через SQLTrace ), например,
>запрос select acc_name into :colAccName from accounts where acc_l0 = :twEntrJrnl.sAccL0 транслируется select acc_name into :colAccName from accounts where acc_l0 = '40702 ' (куча пробелов в конце) вместо того, чтобы странслироваться select acc_name into :colAccName from accounts where acc_l0 = '40702'. Происходит это только в запросах, где есть Bind параметры и подзапросы в условии WHERE (в примере я это опустил для краткости).
> Еще одно различие заключается в том, что перед открытием курсора (sp_cursoropen) в 16-разрядной версии посылается
>SET NOEXEC ON, а здесь - иногда SET FMTONLY ON, а иногда - НИЧЕГО - и в этом-то случае и получается неправильный запрос.
> ОDBС мы использовали версии 3.7.06.90. Когда я подставил версию 2.65.02.52, то этой ошибки не возникает, и запросы выглядят так же, как и в 16-разрядной версии. Но версия 2.65.02.52 работает менее стабильно, поэтому хотелось бы использовать все шансы по использованию версии 3.7...
> Всвязи с этим мой вопрос состоит в следующем: есть ли какие-либо рекомендации CENTURA по использованию ODBC к Microsoft SQLServer в смысле версии или предпочтений. А также не встречался ли ко-нибудь с аналогичной проблемой.
>Просьба не отвечать предложениями упростить запрос или не использовать Bind-переменные.
> Спасибо.
>

В ODBC-источнике следует выключить флаг "Use ANSI nulls, paddings and warnings". Данное поведение соответствует как раз "paddings". Остальные опции можно будет включить программно через "SET ... on", после подключения первого курсора.
Ответить на сообщение »
 
Автор:  Vadim Дата: 17.11.2000 10:44
Уважаемые коллеги!
Наша система использует CTD151 в качестве клиентской части, а в качестве серверной - Micrоsоft SQLServer 7.0/6.5.
Некоторые запросы, используемые при заполнении таблицы (SalTblPopulate), в который в условии WHERE используются BIND параметры, неправильно транслируются в вид, исполняемый на SQLServer ( ловится через SQLTrace ), например,
запрос select acc_name into :colAccName from accounts where acc_l0 = :twEntrJrnl.sAccL0 транслируется select acc_name into :colAccName from accounts where acc_l0 = '40702 ' (куча пробелов в конце) вместо того, чтобы странслироваться select acc_name into :colAccName from accounts where acc_l0 = '40702'. Происходит это только в запросах, где есть Bind параметры и подзапросы в условии WHERE (в примере я это опустил для краткости).
Еще одно различие заключается в том, что перед открытием курсора (sp_cursoropen) в 16-разрядной версии посылается
SET NOEXEC ON, а здесь - иногда SET FMTONLY ON, а иногда - НИЧЕГО - и в этом-то случае и получается неправильный запрос.
ОDBС мы использовали версии 3.7.06.90. Когда я подставил версию 2.65.02.52, то этой ошибки не возникает, и запросы выглядят так же, как и в 16-разрядной версии. Но версия 2.65.02.52 работает менее стабильно, поэтому хотелось бы использовать все шансы по использованию версии 3.7...
Всвязи с этим мой вопрос состоит в следующем: есть ли какие-либо рекомендации CENTURA по использованию ODBC к Microsoft SQLServer в смысле версии или предпочтений. А также не встречался ли ко-нибудь с аналогичной проблемой.
Просьба не отвечать предложениями упростить запрос или не использовать Bind-переменные.
Спасибо.
Ответить на сообщение »
 

Добавить сообщение »
Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/iservices/messages.asp?forumId=589&topicId=14