使用Node.js连接到远程的Microsoft SQL服务器

17

我想知道是否有办法从Node.js连接到Microsoft SQL数据库。我知道MySQL驱动程序,但我需要从MS SQL数据库中提取数据,而不希望使用PHP脚本来实现。


你最终能否在不构建代理或使用ActiveX的情况下完成这个任务了? - lo5
3
我很高兴偶然发现这个,因为我在想是否有人会对我的node.js-mssql项目感兴趣。目前它还十分基础,但我将在本周晚些时候进行另一次大力推进,增加更多功能 :) https://github.com/orenmazor/node-tds - Oren Mazor
一个纯JavaScript解决方案提供了Node.js模块tds4node。GitHub链接:tds - ttghr
可能是Node.js和Microsoft SQL Server的重复问题。 - Zephyr was a Friend of Mine
7个回答

10

10
node-tds项目的描述现在为*实验性的并且目前已被废弃* - Factor Mystic

8
我怀疑你需要用JSON输出的Web服务包装SQL Server。积极的一面是,这应该相对容易做到。
如果node.js中的JavaScript引擎可以做到这一点,那就太好了(来自于如何在浏览器中使用JavaScript连接到SQL Server数据库?)。
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;

3
我应该将这个回答点踩吗?因为在2014年以后已不再是最佳答案了。我不确定是否道德上允许点踩一个过时的回答。请看这里,这是我认为现在应该使用的东西:https://dev59.com/Lm435IYBdhLWcg3w4UWs#22658512 - Christiaan Westerbeek
2
这个答案在2015年已经不再适用了。如果你想使用ORM,那么SequelizeTedious是更好的选择。 - treythomas123

7
我会推荐使用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服务更快。


2

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

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


2

1
MS选项需要二进制模块构建,似乎仅适用于Windows操作系统。 - Tracker1
有很多方法可以做到这一点。微软驱动程序只是其中之一。但出于同样的原因,我实际上并不使用它,即仅限于Windows系统。:( 今天我刚发现了这个...http://www.microsoft.com/en-us/download/details.aspx?id=28160 - Sneaky Wombat

0

最近我遇到了这个问题,我正在尝试连接托管在远程服务器上的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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接