如何在TinyTDS中使用activerecord-sqlserver-adapter *和*在Windows *上集成安全连接,而不用*以纯文本保存密码

我正在尝试使用Rails 3.1。 在Windows机器上使用activerecord-sqlserver-adapter(3.1.1)和tiny_tds(0.4.5)。 在阅读有关TinyTDS和它的使用FreeTDS它看起来像我可以使用集成安全性(又名Windows集成安全/ NTLM)通过将域限定的名称作为用户名(例如DOMAIN \ userbob)。 但是文档仍然希望我在database.yml文件中input我的域用户的密码。 这是不好的做法,因为它是不安全的,不利用单一login,这是集成安全性的一部分。

我可以连接而不用在文件中以纯文本保存密码? 例如

developement: adapter: sqlserver mode: dblib dataserver: localhost database: dev_db username: DOMAIN\userbob # password: no_no_please_dont_make_me_type_it_here 

但是,即使我把密码,我得到以下错误:

 TinyTds::Error: Unable to connect: Adaptive Server is unavailable or does not exist from C:/Ruby192/lib/ruby/gems/1.9.1/gems/tiny_tds-0.4.5-x86-mingw32/lib/tiny_tds/client.rb:60:in `connect' from C:/Ruby192/lib/ruby/gems/1.9.1/gems/tiny_tds-0.4.5-x86-mingw32/lib/tiny_tds/client.rb:60:in `initialize' 

我知道我的服务器正在运行,当前的用户上下文可以连接,因为这个工作:

 sqlcmd -S localhost -d dev_db -E 

任何见解? 可能吗? 如果不是, 应该是。

在SQL server配置管理器实用程序中的“SQL server网络配置”中启用TCP / IP。 然后重新启动SQL server服务。

关于安全性,您将需要提供自己的凭据,否则将使用sa帐户。

显然,SQL server 2008默认设置为只允许Windows身份验证。 要改变你必须打开管理工作室,右键单击你的服务器,然后选择属性。 选择安全,然后单击服务器身份验证下的“SQL server和Windows身份验证模式”。 这将至少允许您直接连接到服务器,直到TinyTDS进行所需的更改以允许Windows身份验证。

我认为建立连接的代码试图让这个进程模拟凭证提供的安全上下文,而不是将缺省凭证传递给SQL服务器。

这将允许您为当前的安全上下文指定不同的凭据。 我已经使用这个技巧连接到一个不受信任的域的SSIS服务器。

我不知道TinyTDS / FreeTDS,也许空或凭证将使它使用默认的安全上下文。 尝试:

 developement: adapter: sqlserver mode: dblib dataserver: localhost database: dev_db 

要么

 developement: adapter: sqlserver mode: dblib dataserver: localhost database: dev_db username: password: 

尝试使用

 developement: adapter: sqlserver mode: dblib dataserver: localhost\SQLEXPRESS database: dev_db username: DOMAIN\userbob 

或者你在你的sql服务器中设置2个变体认证 ? 然后尝试连接sa用户…