使用 freetds 和 tinytds gem 查询 MSSQL 2008 数据库时,语法如下:
db = TinyTds::Client.new(:username => ...)
select = db.execute("EXEC dbo.__stored_procedure__")
db.close
然后这一行导致 ruby 在 Windows 上崩溃:
select.each {|x| p x}
奇怪的是,查询简单选择时:
select = db.execute("SELECT field FROM table")
select.each
不会崩溃 - 它也不会做任何循环
它也不会使 webrick 和 rails 控制台崩溃。
但是当我将代码更改为:
db = TinyTds::Client.new(:username => ...)
select = []
db.execute("EXEC dbo.__stored_procedure__").each { |x|
select << x
}
db.close
然后它就像一个魅力(即使是选择)。
不要它在操作系统上的工作方式比 Windows 更好......