Windows 上的 Ruby 2.0 连接到 MS SQL varchar(max) 截断为 2048

Ahm*_*med 5 ruby sql-server freetds varcharmax

背景:我编写了一些 ruby​​ 转换脚本,它们从 MS SQL 获取数据进行转换,然后将其存储回数据库我正在使用微型 tds gem,它可以在 freetds 上工作

--问题:对于 sql 中 varchar max 且字符串长度大于 2048 的列,当使用微小 tds 提取数据时,这些列会被截断为 2048 长度。

Freetds 协议 7.2 确实解决了这个问题,但在 Windows 平台上不可用,代码在 Mac 上完美运行。但由于与 ETL 工具集成,我必须将其部署在 Windows 计算机上。

——有没有人能解决这个问题。

Gar*_*ker 6

我自己没有任何代码执行此操作,但是您尝试过使用set textsize 命令吗?我认为默认是2048。

来自 MS 关于设置 TextSize 的文章

The SQL Server Native Client ODBC driver and SQL Server 
Native Client OLE DB Provider for SQL Server automatically 
set TEXTSIZE to 2147483647 when connecting.
Run Code Online (Sandbox Code Playgroud)

但我认为您可能需要显式调用它(在获取数据之前使用相同的连接)。