【问题标题】:Connecting to a remote Microsoft SQL server from Node.js从 Node.js 连接到远程 Microsoft SQL 服务器
【发布时间】:2011-06-11 07:59:31
【问题描述】:

我想知道是否有人知道从 Node.js 连接到 Microsoft SQL 数据库的方法。我知道 MySQL 驱动程序,但我有需要从 MS SQL 数据库中提取的数据,我宁愿直接从 Node.js 中提取数据,也不愿破解某种 PHP 脚本。

【问题讨论】:

  • 您最终能够在不构建代理或使用 ActiveX 的情况下完成此任务吗?
  • 我很高兴我刚刚遇到这个问题,因为我想知道是否有人会对我的 node.js-mssql 项目感兴趣。目前它还很初级,但我将在本周晚些时候推出更多功能:)github.com/orenmazor/node-tds
  • 纯javascript解决方案提供node.js模块tds4node。 GitHub链接:tds

标签: node.js node-mssql


【解决方案1】:

【讨论】:

  • node-tds 项目描述现在改为*EXPERIMENTAL and currently ABANDONED*
【解决方案2】:

我怀疑您必须使用输出 JSON 的 Web 服务来包装您的 SQL Server。从积极的方面来说,它应该相对容易做到。

如果 node.js 中的 JavaScript 引擎可以做到这一点,那就太好了:(来自How to connect to SQL Server database from JavaScript in the browser?):

var connection = new ActiveXObject("ADODB.Connection") ;

var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB";

connection.Open(connectionstring);
var rs = new ActiveXObject("ADODB.Recordset");

rs.Open("SELECT * FROM table", connection);
rs.MoveFirst
while(!rs.eof)
{
   document.write(rs.fields(1));
   rs.movenext;
}

rs.close;
connection.close;

【讨论】:

  • 我应该否决这个答案,因为这不再是 2014 年的最佳答案了吗?我不确定否决过时的答案是否被认为在道德上是允许的。在这里寻找我认为今天应该使用的内容:stackoverflow.com/questions/5156806/…
  • 这在 2015 年不再是一个好的答案。Sequelize(如果你想要 ORM)或Tedious 是更好的选择。
【解决方案3】:

我会推荐node-mssql,它是其他连接器的一个很好的包装器,默认是我之前的选择(Tedious),它带来了更好的接口。这是一个 JavaScript 实现,没有编译要求,这意味着您可以在 Windows 和非 Windows 环境中工作。

另一个选择,如果您不介意引入带有二进制桥的 .Net 或 Mono,则可以使用 edge.js。如果您想在 node.js 中利用 .Net 库,这会非常好

node-tds 已被废弃,node-odbc 不适用于 Windows,MS node-sqlserver 驱动程序似乎不适用于非 Windows(并且有一些愚蠢的要求)。

【讨论】:

    【解决方案4】:

    如果您从 linux 连接到 Mssql,您可以将 node-odbc (https://github.com/w1nk/node-odbc) 与 freetds odbc 驱动程序一起使用。我在生产中使用它,它比包装 Web 服务更快。

    【讨论】:

      【解决方案5】:

      另一个选项,甚至来自微软,

      http://www.microsoft.com/en-us/download/details.aspx?id=29995

      或通过 odbc 的 linux sql 客户端驱动程序:

      http://www.microsoft.com/en-us/download/details.aspx?id=28160

      【讨论】:

      • MS 选项需要二进制模块构建,并且似乎仅适用于 Windows。
      • 有很多方法可以做到这一点。微软驱动程序只是其中之一。我实际上不使用它,但出于同样的原因,仅限 Windows。 :( 我今天才发现这个...microsoft.com/en-us/download/details.aspx?id=28160
      【解决方案6】:

      2015 年的新答案:ORM 包 Sequelize 现在支持 MS SQL,在后台使用 Tedious 驱动程序。

      这是我发现的与 Microsoft SQL Server 交互的最佳方式。

      【讨论】:

        【解决方案7】:

        我最近遇到了这个问题,我试图连接托管在远程服务器上的 MSSQL。我必须使用的配置是-

        let config = {
            user: 'user',
            password: 'password',
            server: 'server',
            database: 'database',
            "options":{
                instanceName: 'instanceName',
                "encrypt":true,
                "enableArithAbort":true,
                "trustServerCertificate": true,
               }
        };
        module.exports=config;
        

        要获取实例名称,请在 SSMS 中使用 SELECT @@servicename

        【讨论】:

          猜你喜欢
          • 2012-07-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多