将SSPI与Ruby TinyTDS结合使用 - 可能吗?

时间:2013-01-16 00:50:32

标签: ruby sql-server sspi tiny-tds

在尝试使用Ruby连接到SQLServer数据库之后,我终于发现了TinyTDS,这太棒了。

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

我找不到用TDS做这个的方法(开始怀疑当前版本不可能)并希望有人可能证明我错了,或者有其他建议?

干杯。

1 个答案:

答案 0 :(得分: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访问数据库。