有什么方法可以让我的Node.js应用程序与Microsoft SQL通信?我没有在野外看到任何MS SQL驱动程序?
我将一个非常简单的应用程序放在一起,需要能够与现有的MS SQL数据库进行通信(否则我会使用mongoDB或Redis)
我正在尝试使用带有mssql连接接口的NodeJS连接到MSSQL 2012 .
尝试连接时,我收到以下错误:
{ [ConnectionError: Failed to connect to localhost:1433 - connect ECONNREFUSED]
name: 'ConnectionError',
message: 'Failed to conncet to localhost:1433 - connect ECONNREFUSED',
code: 'ESOCKET' }
Run Code Online (Sandbox Code Playgroud)
有想法该怎么解决这个吗?
我想在Node JS Express 4 Web应用程序中使用node-mssql作为MSSQL数据库连接器.路径处理程序逻辑在单独的文件中处理.
如何创建单个/全局连接池并在处理路由逻辑的多个文件中使用它?我不想在每个路由处理函数/文件中创建一个新的连接池.
我想知道是否有人知道从Node.js连接到Microsoft SQL数据库的方法.我知道MySQL驱动程序,但我需要从MS SQL数据库中获取数据,而是直接从Node.js中提取数据而不是破解某种类型的PHP脚本.
我有一个在Linux机器上运行的nodejs服务。我需要连接到Sql Server(Mssql)。
我正在使用mssql程序包,但在与AD连接时看不到任何支持。
还有一个Azure Keyvault,我们可以通过调用以下命令与连接到计算机的MSI连接:
import * as msRestAzure from 'ms-rest-azure'
msRestAzure.loginWithVmMSI({ resource: this.azureKeyVaultResourceName })
Run Code Online (Sandbox Code Playgroud)
有没有办法使用我从loginWithVmMSI获得的凭据并连接到Sql Server?有没有一种方法可以直接用AD调用Sql Server?
是否有其他驱动程序对此提供支持?乏味还是nodemssql?
我在使用sqlserver 2012的npm mssql 3.0.0中收到错误
我正在创建单页应用程序,我使用express来使用restful.有4个方法执行查询并将数据返回到响应.对于每种方法,我打开连接并关闭连接.
但是当savedquery正在调用时,会发生连接关闭错误.
每个方法代码类似于savedquery方法(复制粘贴代码只有查询被更改)但是它们正在执行savedquery没有执行
{[ConnectionError:Connection is closed.] name:'ConnectionError',message:'Connection is closed.',code:'ECONNCLOSED'}
var savedquery=function(req,res){
dbConfig= {
user: 'XXX',
password: 'XXXXXXXXXX',
server: 'localhost', // You can use 'localhost\\instance' to connect to named instance
database: 'DEMO_ODS',
options: {
encrypt: true
}
};
sql.connect(dbConfig).then(function (err) {
var sqlrequest = new sql.Request();
sqlrequest.query("SELECT * from SavedQuery").then(function (recordset) {
sql.close(function (value) {
console.log("connection6 closed");
});
return res.status(200).send(recordset);
}).catch(function (err) {
console.log(err);
});
}).catch(function (err) {
console.log(err);
});
};
}
Run Code Online (Sandbox Code Playgroud) 执行几个 SQL 语句后总是出现以下错误。
我在用
var sql = require("mssql");
Run Code Online (Sandbox Code Playgroud)
(节点:12240)[DEP0064] 弃用警告:tls.createSecurePair() 已弃用。请改用 tls.Socket。warning.js:18(节点:12240)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:2):ConnectionError:无法连接到Server-100:15000ms内未定义 warning.js:18(节点:12240)[DEP0018] DeprecationWarning:未处理的承诺拒绝已被弃用。将来,未处理的 Promise 拒绝将会以非零退出代码终止 Node.js 进程。warning.js:18(节点:12240)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:4):ConnectionError:无法连接到Server-100:15000ms内未定义 warning.js:18
ConnectionError: Failed to connect to server-100:undefined in 15000ms
at Connection.tedious.once.err (d:\API\node_modules\mssql\lib\tedious.js:216:17)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at Connection.emit (events.js:210:7)
at Connection.connectTimeout (d:\API\node_modules\tedious\lib\connection.js:634:12)
at ontimeout (timers.js:469:11)
at tryOnTimeout (timers.js:304:5)
at Timer.listOnTimeout (timers.js:264:5)
Run Code Online (Sandbox Code Playgroud)
以下是代码:
module.exports = function (data) {
return new Promise(function (resolve, reject) {
var database = new sql.ConnectionPool({
user: 'sa',
password: 'password',
server: 'Server-100',
database: 'SQLDB',
options: {
encrypt: true, …
Run Code Online (Sandbox Code Playgroud) 我收到以下错误。我如何解决它?
tedious deprecated 在`tedious` 的下一个主要版本中`config.options.enableArithAbort` 的默认值将从`false` 更改为`true`。将值显式设置为“true”或“false”以使此消息静音。node_modules\mssql\lib\tedious\connection-pool.js:61:23
我正在寻找有关如何使用Node.js连接到MS SQL Sever 2008的最新说明(v0.5.7)
我在GitHub上尝试了两个Node.js项目:
https://github.com/vivina/node-mssql
https://github.com/orenmazor/node-tds
node-tds是一个废弃的项目,node-mssql似乎不完整,或者至少代码库似乎与最新版本的Node.js已经过时了
有没有人实际上有Node.js连接和查询Microsoft SQL Server 2008?
我很想看到一些配置细节(版本,插件等)和代码示例.
谢谢,
P.
关于SO的过时答案: Node.js和Microsoft SQL Server,从Node.js连接到远程Microsoft SQL服务器
我正在开发一个express
基于应用程序,它可以对不同的(不同的用户!)SQL Server 2008和2014数据库进行一些查询.它是不同的,因为每个用户属于不同的公司,每个公司都有自己的SQL Server.我的应用程序使用自己的SQL Server来管理公司及其SQL Server连接字符串(我的应用程序可以访问其数据库服务器).我正在使用该mssql
模块.
我没有找到关于"我应该为每个用户会话使用一个SQL Server连接还是为每个用户请求使用一个连接"的最佳实践.
来自.NET世界我们有一个规则:"一个查询/功能 - 一个连接".
首先,应用程序必须查询自己的应用程序数据库,以获取用户公司数据库的SQL Server连接字符串.然后,用户可以从他们公司的SQL Server(在我的应用程序中)中检索一些数据 - 比如getAccounts()
.这些函数中的每一个(每个函数 - 不是该函数中的每个请求!)打开一个新连接并在查询完成后关闭它:
let connection = new mssql.Connection(conStr, (err) => {
request.query(queryString, (err, result) => {
if (err)
throw new Error('...');
resolve(result)
connection.close();
});
})
Run Code Online (Sandbox Code Playgroud)
据我了解,如果100个用户每个请求打开和关闭连接(假设每个用户同时只有一个请求),或者如果100个用户有100个打开的连接(每个用户一个),则不会产生(负面)差异整个会议.乍一看似乎我的方法资源不足,因为只有在需要时才打开连接(即每个请求几秒钟).
我错过了什么吗?如果200个用户同时访问我的应用程序怎么办 - 我会以某种方式遇到麻烦吗?
提前致谢!
[编辑]
据我所理解,
let connection = new mssql.Connection(...)
Run Code Online (Sandbox Code Playgroud)
将创建一个新的连接池,当我使用类似的东西时,它将打开一个新的连接
connection.connect()
Run Code Online (Sandbox Code Playgroud)
并关闭所有活动连接:
connection.close()
Run Code Online (Sandbox Code Playgroud)
所以我猜测我的场景中的最佳实践是为new mssql.Connection(..)
每个活动用户创建一个连接池(),将其保存在某种会话存储中,然后在会话的整个生命周期中重用它.
这是一个好方法吗?
我只想避免一件事:用户因为无法创建连接而收到错误.