Подключение к SQL Server с помощью CL-SQL через unixODBC / FreeTDS - PullRequest
0 голосов
/ 10 июля 2009

Мне удалось подключиться из SBCL, запущенного в Debian, к экземпляру SQL Server 2000 по сети, используя FreeTDS / unixODBC.

Я действительно могу получить данные с сервера, так что все работает.

Однако многие из столбцов запускают то, что кажется неподдерживаемыми типами данных а-ля:

The value 2147483647 is not of type FIXNUM.

и

-11 fell through ECASE expression. 
Wanted one of (-7 -6 -2 -3 -4 93 92 91 11 10 ...).

Кто-нибудь, имеющий опыт использования CLSQL с SQL Server, сможет помочь?

1 Ответ

0 голосов
/ 13 ноября 2009

Это (ошибка с 2147483647) происходит потому, что драйвер FreeTDS не так хорошо обрабатывает BLOB-объекты OLEDB.

Вы должны выполнить следующую команду SQL, чтобы она заработала:

set textsize 102400

Вы можете увидеть запись FAQ по FreeTDS здесь . Выдержки:

Текстовый тип данных отличается от типов char и varchar. Максимальная длина данных текстового столбца определяется параметром подключения текстового размера. Microsoft утверждает, что в их документации используется стандартный размер текста в 4000 символов, но на самом деле их реализация противоречива. Иногда текстовые столбцы возвращаются с размером 4 ГБ!

Лучшее решение заключается в том, чтобы при установлении соединения вы установили разумное значение для параметра textize.

Что касается выражения ECASE, я на самом деле не решил его, но взломал его, выполнив преобразование данных timestamp в значение binary и uniqueidentifier в varchar(36).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...