ruby-on-rails - 将 Rails 应用程序从 Windows 连接到 SQL Server 2005

标签 ruby-on-rails sql-server-2005 odbc

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

在网上冲浪有很多关于从 Linux 连接到 SQL Server 的点击,但无法找到如何从 Windows 进行连接。

基本上我遵循了以下步骤:

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

  • 我的 数据库.yml 现在看起来像这样:
    development:
      adapter: sqlserver
      mode: odbc
      dsn: test_dj
      host: HOSTNAME\SQLEXPRESS
      database: test_dj
      username: guest
      password: guest
    

    但我无法连接它。当我运行 rake db:migrate 我得到
    IM002 (0) [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
    

    我不是Windows用户,所以不太明白的含义dsn 元素左右。
    有人知道如何解决这个问题吗?

    提前致谢

    现在有了 Alexander 提示,我将 database.yml 修改为:
    development:
      adapter: sqlserver
      mode: odbc
      dsn: Provider=SQLOLEDB;Data Source=SCADA\SQLEXPRESS;UID=guest;PWD=guest;Initial Catalog=test_dj;Application Name=test
    

    但是现在 rake db:migrate 返回给我:
    S1090 (0) [Microsoft][ODBC Driver Manager] Invalid string or buffer length
    

    我错过了什么吗?

    最佳答案

    这是一个示例 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 作为提供程序的工作脚本中复制的。数据源是服务器,如果它有一个命名实例,它必须被指定,所以它要么只是ServerServer\Instance . Integrated Security=SSPI告诉它您要使用 Windows 身份验证。否则,您可以使用 UID=MyUser;PWD=MyPassword 指定要使用的用户和密码。 . UID、用户、用户名、密码 - 我认为所有这些参数都有效。

    互联网上有一个很棒的站点,提供各种 DSN 示例,只是在任何地方都找不到。如果我找到了,我会告诉你的。

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

    啊,这是我说的那个网站:http://www.connectionstrings.com/

    关于ruby-on-rails - 将 Rails 应用程序从 Windows 连接到 SQL Server 2005,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2651358/

    相关文章:

    sql-server - 如何匹配可变长度的子字符串?

    mysql - Oracle 数据库 - 链接到 Mac 上的 MySql?

    ms-access - 如何通过 JDBC-ODBC 桥在 MS Access 中指定空值?

    ruby-on-rails - 如何让 capybara 找到快速出现和消失的元素(加载微调器)

    ruby-on-rails - 使用 update_column 与 update_all 更新 jsonb

    ruby-on-rails - 你能在 HAML css 中插入 ruby​​ 变量吗?

    sql - 如何通过列名查找数据库名和表名

    sql - 如何设置SQL Server用户访问某些表的权限

    javascript - 将 collection_select 菜单选项链接到过滤方法 - Ruby on Rails

    php - 查询 SQL DB TableView 并在 HTML 表中显示结果