2009-07-10 13 views
0

J'ai réussi à me connecter depuis SBCL sur Debian à une instance SQL Server 2000 sur le réseau en utilisant FreeTDS/unixODBC.Connexion à SQL Server avec CL-SQL via unixODBC/FreeTDS

Je peux récupérer des données du serveur, tout fonctionne.

Cependant, la plupart des colonnes déclenchent ce qui semble être les types de données non pris en charge une-la:

The value 2147483647 is not of type FIXNUM. 

et

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

Toute personne ont de l'expérience en utilisant CLSQL avec SQL Server serait en mesure d'aider en dehors?

Répondre

0

Cette (erreur avec 2147483647) se produit car le pilote FreeTDS ne gère pas si bien les BLOB OLEDB.

Vous avez d'émettre la commande SQL suivante pour le faire fonctionner:

set textsize 102400 

Vous pouvez voir la FAQ FreeTDS entrée here. Extrait:

Le type de données de texte est différent des types char et varchar. La longueur de données maximale d'une colonne de texte est régie par l'option de connexion textsize. Microsoft prétend dans sa documentation utiliser une taille de texte par défaut de 4000 caractères, mais en fait leur implémentation est incohérente. Parfois, les colonnes de texte sont retournées avec une taille de 4 Go! La meilleure solution est de vous assurer que vous avez réglé l'option textize sur une valeur raisonnable lors de l'établissement d'une connexion.

En ce qui concerne l'expression de ECASE, je n'ai pas vraiment résolu, mais j'ai piraté ce loin en faisant une conversion de données de timestamp en une valeur binary, et un uniqueidentifier dans un varchar(36).

Questions connexes