我正在尝试使用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用户…