2013-01-16 39 views
3

在尝试用Ruby连接到SQLServer数据库后,我终于发现了TinyTDS,这真是太棒了。在Ruby TinyTDS中使用SSPI - 可能吗?

但是,它需要用户名和密码才能与数据库通话。在过去的C#测试中,我们使用SSPI来提供这个,这样任何测试者都可以拿起一个脚本并运行它,它将使用他们的Windows身份验证细节。

我无法找到一种方法来做到这一点与TDS(开始怀疑这是不可能的当前版本),并希望有人可能证明我错了,或有另一个建议?

干杯。

回答

3

找到解决方案。

我安装tiny-tds的版本是0.51。

最新版本有SSPI,所以得到的是:

gem install tiny_tds --version ">= 0.6.0.rc1" 

这种带有无需指定用户名/密码,默认使用SSPI。

因此,作为一个例子:

require 'tiny_tds' 

    sql = "SELECT name from sys.databases" 
    client = TinyTds::Client.new(:dataserver => "myserver", :database => "mydatabase") 
    result = client.execute(sql) 
    results = result.each(:symbolize_keys => true, :as => :array, :cache_rows => true, :empty_sets => true) do |rowset| end 
    #THIS IS TO OUTPUT IT TO THE CONSOLE 
    for i in (0..result.fields.length) 
     printf("%14s", result.fields[i]) 
    end 
    for j in (0...result.affected_rows) 
     puts "" 
     for i in (0...result.fields.length) 
     printf("%14s",results[j].at(i)) 
     end 
    end 

将打印出的数据库名称的列表,使用SSPI来访问数据库。

+0

我想知道为什么TinyTds团队不会发布新功能的新宝石。 – Jarl

+0

@Jarl我认为这是一个人在业余时间做的事情(我当时在推特上)。 –

+1

你做出的伟大研究。感谢您在公开场合回答您自己的问题。 – Jarl