2010-04-16 51 views
7

Rails应用程序到SQL Server 2005我(黯然)必须部署在Windows XP上应用程序,它具有连接到的Microsoft SQL Server 2005连接从Windows

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

基本上我按照这些步骤:

  • 安装DBI宝石
  • 安装的ActiveRecord-SQL服务器适配器宝石

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

development: 
    adapter: sqlserver 
    mode: odbc 
    dsn: test_dj 
    host: HOSTNAME\SQLEXPRESS 
    database: test_dj 
    username: guest 
    password: guest 

但我无法连接它。当我运行耙分贝:迁移我得到

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

我不是一个Windows用户,所以无法理解得很好DSN元左右的含义。 有人有一个想法如何解决这个问题?

预先感谢


与亚历山大技巧现在我已经修改了我的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 

但现在耙分贝:迁移返回我:

S1090 (0) [Microsoft][ODBC Driver Manager] Invalid string or buffer length 

我是米发布什么?

回答

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

在互联网上有一个伟大的网站,提供各种DSN样本,只是无法找到任何地方。如果我找到它,我会让你知道。

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

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

+0

亚历山大感谢您的回答。根据你的提示,我修改了我的database.yml,就像在编辑过的文章中一样,但是现在有“无效的字符串或缓冲区长度” – 2010-04-16 08:08:33

+0

这看起来像是SQL查询中的错误,而不是连接错误。提供错误代码也很有帮助,可能会说很多。 无论如何,我发现这篇文章可能会帮助你: http://tutorials.aspfaq.com/8000xxxxx-errors/why-do-i-get-80040e57/80040e07-errors.html 当然,它取决于什么规模的SQL查询自动化以及如何修改它们。另外请记住,MSSQL中的CHAR和VARCHAR的最大长度为8000. – AlexanderMP 2010-04-16 08:30:34

+0

我遇到与Enrico相同的问题。这是错误: ODBC :: Error:S1090(0)[Microsoft] [ODBC驱动程序管理器]无效的字符串或缓冲区长度 这是从我的(非常简单)模型上执行所有查询。 – 2010-04-16 08:55:30