从Windows将rails应用程序连接到SQL Server 2005

Enr*_*sso 7 odbc sql-server-2005 ruby-on-rails

(遗憾地)必须在Windows XP上部署一个必须连接到Microsoft SQL Server 2005rails应用程序.

在网上冲浪有很多从Linux到SQL Server连接的点击,但无法从Windows中找到如何做到这一点.

基本上我遵循以下步骤:

  • 安装dbi gem
  • 安装activerecord-sql-server-adapter gem

我的database.yml现在看起来像这样:

development:
  adapter: sqlserver
  mode: odbc
  dsn: test_dj
  host: HOSTNAME\SQLEXPRESS
  database: test_dj
  username: guest
  password: guest
Run Code Online (Sandbox Code Playgroud)

但我无法连接它.当我运行rake db:migrate时,我得到了

IM002 (0) [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
Run Code Online (Sandbox Code Playgroud)

我不是Windows用户,因此无法理解dsn元素的含义.有人知道如何解决这个问题吗?

提前致谢


现在我已经将Alexander.yml修改为:

development:
  adapter: sqlserver
  mode: odbc
  dsn: Provider=SQLOLEDB;Data Source=SCADA\SQLEXPRESS;UID=guest;PWD=guest;Initial Catalog=test_dj;Application Name=test
Run Code Online (Sandbox Code Playgroud)

但现在rake db:migrate返回给我:

S1090 (0) [Microsoft][ODBC Driver Manager] Invalid string or buffer length
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Ale*_*rMP 1

这是一个示例 DSN,它使用 Windows 用户帐户连接到数据库(最好在使用域登录的公司网络时)

Provider=SQLOLEDB;Data Source=MyServer\MyInstance;Integrated Security=SSPI;Initial Catalog=MyDatabase;Application Name=My Application Name that will show up in the trace

因此,这使用了 SQL Server 的 OLEDB 提供程序。SQLNCLI也可以用,ODBC没试过。实际上这个 DSN 还没有经过充分测试(必须等待我的管理员给我必要的权限),但它是从使用 SQLNCLI 作为提供程序的工作脚本复制的。数据源是服务器,如果它有命名实例,则必须指定它,因此它要么只是Server 要么Server\Instance。告诉Integrated Security=SSPI它您要使用 Windows 身份验证。否则,您可以使用 指定要使用的用户和密码UID=MyUser;PWD=MyPassword。UID、用户、用户名、密码 - 我认为所有这些参数都有效。

互联网上有一个很棒的网站提供各种 DSN 示例,但到处都找不到。如果我找到了,我会告诉你的。

如果 Rails 中没有任何提供程序,请检查 Rails 是否支持 Windows 组件对象模型 (COM)。如果是这样,您甚至可以初始化 ADODB.Connection COM 类,并在其上使用 ADO。

啊,这是我正在谈论的那个网站: http: //www.connectionstrings.com/