FreeTDS + MSSQL, Запрос активен, но нет результата |
Здравствуйте, гость ( Вход | Регистрация )
FreeTDS + MSSQL, Запрос активен, но нет результата |
Pirus |
9.1.2013, 11:45
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 9.1.2013 Пользователь №: 3668 Спасибо сказали: 0 раз(а) Репутация: 0 |
Исходники клиентской программы на Qt.
Задача: Найти "бесплатный" способ работы с MSSQL из под Linux. Нашел FreeTDS (QTDS) и unixODBC + FreeTDS (QODBC), выбрал вариант работы напрямую через QTDS plugin. Qt: 4.8.4 Клиентская ОС: Distributor ID: SUSE LINUX Description: openSUSE 11.1 (i586) FreeTDS: 0.91 ./configure --prefix=/usr/local/freeTDS --enable-msdblib --with-tdsver=8.0 make install QTDS plugin: cd %QTDIR%/src/plugins/sqldrivers/tds qmake -o Makefile "INCLUDEPATH=/usr/local/freeTDS/include" "LIBS=-L/usr/local/freeTDS/lib -lsybdb" make install Данные MSSQL сервера: Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Copyright © Microsoft Corporation Developer Edition (64-bit) on Windows NT 6.0 <X64> (Build 6002: Service Pack 2) freetds.conf Раскрывающийся текст [global] # TDS protocol version ; tds version = 4.2 # Whether to write a TDSDUMP file for diagnostic purposes # (setting this to /tmp is insecure on a multi-user system) ; dump file = /tmp/freetds.log ; debug flags = 0xffff # Command and connection timeouts ; timeout = 10 ; connect timeout = 10 # If you get out-of-memory errors, it may mean that your client # is trying to allocate a huge buffer for a TEXT field. # Try setting 'text size' to a more reasonable limit text size = 64512 [mycar1] host = mycar1 port = 51451 tds version = 8.0 Код тестового проекта Раскрывающийся текст
По шагам: 1) Собрал Qt - Opensource, shared libs. 2) Установил FreeTDS 3) Собрал QTDS плагин 4) Правил freetds.conf 5) export LD_LIBRARY_PATH=/usr/local/freeTDS/lib дабы плагин видел где искать библиотеку freetds 6) Запустил тестовый проект с запросом "select 123", результат "123" (отлично!) 7) Запустил тестовый проект с запросом "declare @i int set @i=123 select @i", результат "No result" (функция isActive() возвращает true, функция next() возвращает false - нет данных) Не понимаю в чем дело =( Пробовал выполнять запросы через tsql - все отлично. Пробовал играть с кодировкой в и тестовом проекте (QTextCodec) и в настройках freetds.conf (client charset) Смотрел приходящие на sql сервер запросы с помощью профайлера - все хорошо, в каком виде отправляю в том же и приходят. Думаю беда где-то в плагинах. Так же наивно пробовал работать через QODBC плагин (unixODBC + freeTDS) беда та же - запрос активный, данных нет. isql аналогично tsql выполняет запросы и возвращает данные на ура. Вопрос - почему нет данных? Есть какие-то идеи по этому вопросу? |
|
|
Гость_Delisov_* |
10.7.2014, 20:31
Сообщение
#2
|
Гости |
Смотрю, тема в интернете не очень популярная. Кому-нибудь да помогу. У меня работает db.setDatabaseName("DRIVER=/usr/local/lib/libtdsodbc.so;URL={ServerName=xxxxx;PortNumber=xxxx;DatabaseName=xxxxx;}
|
|
|
Текстовая версия | Сейчас: 28.3.2024, 12:41 |