powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / LInux + MSSQL + FreeTSD + UnixODBC
7 сообщений из 7, страница 1 из 1
LInux + MSSQL + FreeTSD + UnixODBC
    #36893360
demount
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Искал по всему форуму, ответа не нашел, может кто держит информацию в голове..

Дано: Slackware 12, FreeTDS 0.82 скомпиленный с --with-tdsver=8.0, UnixODBC . Все настроено, работает. Но.. есть проблема, заключающаяся в том, что UnixODBC за каким-то чертом оборачивает исходный запрос к MS SQL типа "SELECT TOP 1 User FROM Users" в нечто подобное "set sb_cursor [SELECT TOP 1 User FROM Users] as @p1" . В результате не удается исполнять вложенные процедуры в исходном запросе.

Проще говоря, когда коннектимся из tsql к серваку и исполняем этот запрос - трассировщик определяет его как SQL, а если из isql (через unixodbc), то он для трассировщика уже RPC и обернут в курсоры..

Может быть, знает кто, как избавиться от них?) Нагугливал, что вроде как можно заставить unixodbc при использовании драйвера выбирать, использовать курсоры или нет, но не нигде не нашел точных примеров, где и в каком формате указывать эти директивы. Да и значения там не совсем те, что нужно - использовать если нужно, использовать, по-умолчанию(использовать).
...
Рейтинг: 0 / 0
LInux + MSSQL + FreeTSD + UnixODBC
    #36893363
demount
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и, да, раньше стояла центос, с неизвестно как настроенным freetds и unixodbc, но все работало без этих курсоров...
...
Рейтинг: 0 / 0
LInux + MSSQL + FreeTSD + UnixODBC
    #36893389
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 11.10.2010 20:09, demount wrote:

> FROM Users" в нечто подобное "set sb_cursor [SELECT TOP 1 User FROM Users] as
> @p1" . В результате не удается исполнять вложенные процедуры в исходном запросе.
>

Это надо вырубить использование курсоров через ODBC API. Что-то типа
SetCursorType(FORWARD_ONLY)

> заставить unixodbc при использовании драйвера выбирать, использовать курсоры или
> нет, но не нигде не нашел точных примеров, где и в каком формате указывать эти
> директивы.

Попробуй почитать именно во FreeTDS про это, может быть там есть какие-то
параметры дополнительные.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
LInux + MSSQL + FreeTSD + UnixODBC
    #36893439
demount
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

FORWARD_ONLY - отличная идея, мысль мелькала насчет них, сейчас курил мсдн, проблема в том, что не уверен как это сделать правильно))

odbc.ini
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[ODBC Data Sources]
freeTDS                 = freeTDS
[dbuser]
#DMConnAttr = SQL_ATTR_ODBC_CURSORS= 0 
DMStmtAttr = SQL_ATTR_CURSOR_TYPE = SQL_CURSOR_FORWARD_ONLY
Description             = dbuser on MS SQL Server
Driver                  = freeTDS

Если раскомментить строчку DMConnAttr, то в логе odbc будет:

Код: plaintext
1.
CONN ATTR [SQL_ATTR_ODBC_CURSOR= 0 ] ret =  0 
Как я понимаю, это значит что ему по барабану на такую установку директивы..

Строка же DMStmtAttr в логе никаких изменений не дает. Одна и та же строчка :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[ODBC][ 21258 ][ 1286811854 . 166438 ][SQLSetStmtOption.c][ 197 ]
Entry:
Statement=0xb7fcb098
Option = SQL_ATTR_CURSOR_TYPE
Value =  3 
[ODBC][ 21258 ][ 1286811854 . 166461 ][SQLSetStmtOption.c][ 474 ]
Exit:[SQL_SUCCESS]

Не вкурить, куда директивы и какие втыкать)
...
Рейтинг: 0 / 0
LInux + MSSQL + FreeTSD + UnixODBC
    #36893492
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 11.10.2010 20:55, demount wrote:

> FORWARD_ONLY - отличная идея, мысль мелькала насчет них, сейчас курил мсдн,

Навскидку не скажу. Не знаю. Ищи сам.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
LInux + MSSQL + FreeTSD + UnixODBC
    #36894647
demount
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

решилось немного иначе.. Установкой директивы SQL_CUR_USE_ODBC. В частности в функции php подключения odbc_connect('DSN', 'user', 'password', SQL_CUR_USE_ODBC);
Сам в шоке.
...
Рейтинг: 0 / 0
LInux + MSSQL + FreeTSD + UnixODBC
    #36894699
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 12.10.2010 14:53, demount wrote:

> решилось немного иначе.. Установкой директивы SQL_CUR_USE_ODBC. В частности в
> функции php подключения odbc_connect('DSN', 'user', 'password', SQL_CUR_USE_ODBC);

Это типа "использовать курсоры ODBC" ?

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / LInux + MSSQL + FreeTSD + UnixODBC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]