有什么方法可以让我的 Node.js 应用程序与 Microsoft SQL 进行通信?我还没有在野外看到任何 MS SQL 驱动程序?
我正在将一个非常简单的应用程序放在一起,并且需要能够与现有的 MS SQL 数据库进行通信(否则我会使用 mongoDB 或 Redis)
有什么方法可以让我的 Node.js 应用程序与 Microsoft SQL 进行通信?我还没有在野外看到任何 MS SQL 驱动程序?
我正在将一个非常简单的应用程序放在一起,并且需要能够与现有的 MS SQL 数据库进行通信(否则我会使用 mongoDB 或 Redis)
最初的问题很老,现在使用@Patrik Šimek 回答的node-mssql包装了@ Tracker1回答的Tedious 是最好的方法。
接受的答案中提到的Windows/Azure node-sqlserver 驱动程序要求您安装一个疯狂的先决条件列表:Visual C++ 2010、SQL Server Native Client 11.0、python 2.7.x,可能还包括 Windows 7 SDK for 64-bit on your服务器。如果你问我,你不想在你的 Windows 服务器上安装所有这些 GB 的软件。
您真的想使用Tedious。但也可以使用node-mssql来包装它,让编码更容易。
2014 年 8 月更新
2015 年 2 月更新 - 2.x(稳定,npm)
这很乏味:
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var config = {
server: '192.168.1.212',
userName: 'test',
password: 'test'
};
var connection = new Connection(config);
connection.on('connect', function(err) {
executeStatement();
}
);
function executeStatement() {
request = new Request("select 42, 'hello world'", function(err, rowCount) {
if (err) {
console.log(err);
} else {
console.log(rowCount + ' rows');
}
connection.close();
});
request.on('row', function(columns) {
columns.forEach(function(column) {
if (column.value === null) {
console.log('NULL');
} else {
console.log(column.value);
}
});
});
request.on('done', function(rowCount, more) {
console.log(rowCount + ' rows returned');
});
// In SQL Server 2000 you may need: connection.execSqlBatch(request);
connection.execSql(request);
}
这里出现了node-mssql,它具有 Tedious 作为依赖项。用这个!
var sql = require('mssql');
var config = {
server: '192.168.1.212',
user: 'test',
password: 'test'
};
sql.connect(config, function(err) {
var request = new sql.Request();
request.query("select 42, 'hello world'", function(err, recordset) {
console.log(recordset);
});
});
我们刚刚发布了用于 SQL Server 连接的 Node.JS 预览驱动程序。你可以在这里找到它们:http: //blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx
您也许可以使用node-tds.js:
一个令人兴奋的 node.js 的 TDS 协议实现,允许与 sql server 通信......
用法:
var mssql = require('./mssql'); var sqlserver = new mssql.mssql(); sqlserver.connect({'Server':__IP__,'Port':'1433','Database':'','User Id':'','Password':''}); var result = sqlserver.execute("SELECT * FROM wherever;");
(从另一个问题复制我的答案)。
我会推荐node-mssql,它是其他连接器的一个很好的包装器,默认是我之前的选择(Tedious),它带来了更好的界面。这是一个 JavaScript 实现,没有编译要求,这意味着您可以在 Windows 和非 Windows 环境中工作。
另一种选择是,如果您不介意引入带有二进制桥的 .Net 或 Mono,则可以使用edge.js。如果您想利用 node.js 中的 .Net 库,这会非常好
node-tds已被废弃,node-odbc不适用于 Windows,MS node-sqlserver驱动程序似乎不适用于非 Windows(并且有一些愚蠢的要求)。
您可以使用另一个模块 - node-mssql。它使用其他 TDS 模块作为驱动程序,并提供易于使用的统一接口。它还添加了额外的功能和错误修复。
额外功能:
TSQLFTW - T-SQL For The WIN(dows) - 由 Fosco Marotto https://github.com/gfosco/tsqlftw
它是一个 C# 和 ADO .NET 托管代码解决方案,具有 Node.js 可以导入和使用的 C++ 包装器。
如果您了解 .NET,您可以尝试 WCF 数据服务(ADO.NET 数据服务);编写一个用于数据访问的 WCF 应用程序并使用 odata(类固醇上的 REST)与数据库进行交互
如果您进入 SOA 并使用 SQL Server 2005,您可以查看适用于 Microsoft SQL Server 2005 的 Native XML Web Services
http://msdn.microsoft.com/en-us/library/ms345123(v=sql.90).aspx
您可以将 SQL Server 作为 Web 服务(HTTP、SOAP)访问
Microsoft(Windows Azure 团队)刚刚发布了 SQL SERVER 的节点驱动程序。
据我所知,它没有用于 npm yert 的软件包,但它是开源的。并接受社区贡献。
https://github.com/WindowsAzure/node-sqlserver
简介博文在这里:
我建议看看Prisma。我们刚刚(2020 年 10 月)宣布了对 SQL Server 的预览支持。
Prisma 是一个强调类型安全和开发者体验的 ORM。与通常将表映射到类的传统 ORM 不同,Prisma 将查询映射到类型(在 TypeScript 中)并从查询中返回纯对象。
要开始使用 Prisma 和 SQL Server,请查看此示例并在文档中从头开始指南。
如果您在 .NET 上运行,请查看 entityspaces.js,我们正在为不需要 WCF JSON 服务的 Node.js 创建一个完整的通用 ORM ... https://github.com/EntitySpaces/entityspaces.js
如果您正在使用 MSFT 后端技术,您现在可以使用它,但是,我们正在创建一个通用的 Node.js ORM,很快就会有更多信息
Node.js SQL Server 驱动程序似乎非常不成熟——不同的项目混杂在一起,具有不同的依赖关系、性能和完整性级别,但没有一个能激发信心。
我建议使用edge-sql。这利用了 .NET 成熟的数据库驱动程序生态系统,并且仅依赖于 .NET(如果您在 Windows 上运行节点,则无需多想 - 如果没有Mono,但我没有尝试过)。
这是一个使用 edge-sql 的节点示例(server.js)(请注意,您需要根据 edge-sql 文档将连接字符串放入环境变量中):
var edge = require('edge');
// edge-sql has built in support for T-SQL / MSSQL Server
var getData = edge.func('sql', function () {/*
select top 10 * from sometable
*/
});
getData(null, function (error, result) {
if (error) throw error;
console.log(result);
});
截至 2016 年 5 月的情况如下。
用于 Node 的官方 Microsoft SQL 驱动程序,称为node-sqlserver,已经多年没有更新了。
在此有一个名为node-sqlserver-v8的新分支,适用于节点版本 0.12.x。并且 >= 4.1.x。这个 fork 还为 x64 和 x86 目标预编译了二进制文件。
该软件包在 NPM 上以msnodesqlv8的形式提供。
我推荐这个包,因为它是轻量级的(没有依赖项),并且它是唯一适用于所有最新版本的 SQL Server 的包,包括 SQL LocalDB。
现在(2016 年)您可以使用Sequelize ORM 支持:
根据其 Github 的星级,它被广泛使用。
该链接仅详细说明了 sql 2000 解决方案,而不是 sql 2005 或 sql 2008,并且该代码仅允许发送 sql 文本,并且不允许执行存储过程。
真正的解决方案是在 linux 服务器上安装 node JS,或者在 windows 机器上的虚拟 linux 服务器上安装,然后去微软网站下载 JDBC java 驱动程序,然后在其中一个上安装那些 microsoft ms sql java jdbc 驱动程序。 linux服务器或linux虚拟服务器。