2009-07-10 94 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)