2009-07-10 14 views
0

Ich habe es geschafft, von SBCL unter Debian auf eine SQL Server 2000-Instanz über das Netzwerk mit FreeTDS/unixODBC verbinden.Verbinden mit SQL Server mit CL-SQL über unixODBC/FreeTDS

Ich kann tatsächlich Daten vom Server abrufen, so funktioniert alles.

jedoch viele der Spalten auslösen, was scheinen a-la nicht unterstützten Datentypen zu sein:

The value 2147483647 is not of type FIXNUM. 

und

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

jemand Erfahrung CLSQL mit SQL Server unter Verwendung der Lage wäre, zu helfen aus?

Antwort

0

Dies (Fehler mit 2147483647) tritt auf, weil der FreeTDS-Treiber OLEDB-BLOBs nicht so gut behandelt.

Sie haben die folgenden SQL-Befehl zu erteilen, damit es funktioniert:

set textsize 102400 

Sie können here die FreeTDS FAQ-Eintrag. Auszug:

Der Textdatentyp unterscheidet sich von Char- und Varchar-Typen. Die maximale Datenlänge einer Textspalte wird durch die textsize-Verbindungsoption bestimmt. Microsoft beansprucht in ihrer Dokumentation, eine Standardtextgröße von 4000 Zeichen zu verwenden, aber tatsächlich ist ihre Implementierung inkonsistent. Manchmal werden Textspalten mit einer Größe von 4 GB zurückgegeben!

Die beste Lösung besteht darin, sicherzustellen, dass Sie die Option textsize auf einen vernünftigen Wert setzen, wenn Sie eine Verbindung herstellen.

Was den ECASE Ausdruck, ich habe gelöst es nicht wirklich, aber ich habe es weg gehackt durch eine Datenumwandlung von timestamp in einen binary Wert zu tun, und ein uniqueidentifier in ein varchar(36).

Verwandte Themen