【发布时间】:2022-11-26 20:09:36
【问题描述】:
我一直在尝试从节点 js 连接到 Sql Server。但它抛出一个错误。这是我的代码连接代码:
const mssql = require('mssql/msnodesqlv8');
var config = {
database : "chatbot",
server : "LAPTOP-AR1H4E0R\SQLEXPRESS",
driver:"msnodesqlv8",
options:{
// "instanceName":"SQLEXPRESS"
trustedConnection:true
}
};
mssql.connect(config, function(err) {
if(err) {
console.log("err", err)
}
else{
console.log("connected")
}
})
这是错误:
ConnectionError:错误:[Microsoft][SQL Server Native Client 11.0]TCP 提供程序:未知此类主机。 ,错误:[Microsoft][SQL Server Native Client 11.0] 登录超时已过期,错误:[Microsoft][SQL Server Native Client 11.0]建立与 SQL Server 的连接时发生了与网络相关或特定于实例的错误。服务器未找到或不可访问。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。 在 D:\Chatbot\agent-backend\node_modules\mssql\lib\msnodesqlv8\connection-pool.js:58:17 在立即。 (D:\Chatbot\agent-backend\node_modules\msnodesqlv8\lib\connection.js:147:15) 在 processImmediate (node:internal/timers:466:21) { 代码:未定义 }
这些是实例的连接凭据。它在 Management Studio 中正常工作。
【问题讨论】:
-
"LAPTOP-AR1H4E0R\\SQLEXPRESS",否则\S被解释为转义序列。或者,使用instanceName,但随后仅将主机指定为LAPTOP-AR1H4E0R。或者, 指定主机但完全省略实例——如果您有默认安装,SQLEXPRESS实例将在默认端口 1433 上运行,并且在这种情况下不需要指定实例名称。 -
附加说明:当使用实例名称时,SQL Browser 服务必须在目标服务器上运行(并且必须在 SQL Server 协议配置发生任何更改后重新启动),并且必须可以通过 Windows 防火墙和 udp/1434 上的网络防火墙访问.如果您已经知道实例正在侦听的 TCP 端口号,则更愿意直接使用它而不是实例名称 - 它可以降低脆弱性。
标签: node.js sql-server