1

今天,tiny_tds 突然不接受多个execute并返回:

C:\>ruby test_use.rb
one
two
C:/test_use.rb:15:in `execute': Attempt to initiate a new Adaptive Server operation with results pending (TinyTds::Error)
    from C:/test_use.rb:15

代码就是三个USEs:

require 'rubygems'
require 'yaml'
require 'fastercsv'
require 'tiny_tds'
require 'iconv'

CONFIG = YAML.load_file("config.yml")

client = TinyTds::Client.new(:username => CONFIG["db"]["username"], :password => CONFIG["db"]["password"], 
  :host => CONFIG["db"]["server"], :database => CONFIG["db"]["database"])

puts "one"
client.execute("USE DATAFEED")
puts "two"
client.execute("USE DATAFEED")
puts "three"
client.execute("USE DATAFEED")

任何线索是什么问题?我已经尝试重新启动 Windows 机器。

4

4 回答 4

4

这是我如何做的一个例子。

results = $regcenter_db.execute("select top 10 * from events")
event_ids = results.collect { |i| i["event_id"] }
results.do    
于 2012-01-13T01:09:47.183 回答
1

您必须使用以下命令终止执行do

Client.execute("...").do

于 2011-10-26T21:41:54.513 回答
0

您必须致电doOR cancel。如果您正在执行诸如获取部分结果之类的操作,并且您对执行do可以调用cancel以中止查询的方法不感兴趣。

于 2016-11-19T05:28:14.927 回答
0

根据GitHub 上TinyTds 的文档

重要的是,您要么从查询中返回数据,很可能使用 #each 方法,要么在要求客户端执行另一个 SQL 批处理之前取消结果。不这样做会产生错误。

要取消查询,请使用以下cancel方法:

client.execute("USE DATAFEED").cancel
于 2018-06-08T16:05:26.830 回答