2009-07-10 108 views
0

我已經設法通過網絡使用FreeTDS/unixODBC從運行在Debian上的SBCL連接到SQL Server 2000實例。通過unixODBC/FreeTDS通過CL-SQL連接到SQL Server

我實際上可以從服務器獲取數據,所以一切正常。

然而,許多欄目中觸發似乎什麼是不支持的數據類型一拉:

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將能夠幫助經驗出來嗎?

回答

0

發生此錯誤(與2147483647錯誤)是因爲FreeTDS驅動程序不能很好地處理OLEDB BLOB。

你必須發出以下SQL命令,使其工作:

set textsize 102400 

你可以看到freetds的FAQ條目here。摘錄:

文本數據類型與char和varchar類型不同。文本列的最大數據長度由文本大小連接選項控制。 Microsoft在其文檔中聲稱使用4000個字符的默認文本大小,但實際上它們的實現不一致。有時候文本列會以4 GB的大小返回!

最好的解決方案是確保在建立連接時將textsize選項設置爲合理的值。

對於ECASE表達,我還沒有真正解決,但我已經破解它帶走做的timestamp數據轉換成binary值和uniqueidentifiervarchar(36)