为啥我不能将 SQL Server 连接到我的节点 js
Posted
技术标签:
【中文标题】为啥我不能将 SQL Server 连接到我的节点 js【英文标题】:Why Can't I connect SQL Server to my node js为什么我不能将 SQL Server 连接到我的节点 js 【发布时间】:2020-09-20 08:19:22 【问题描述】:我正在使用“mssql”npm 包将我的 SQL 服务器连接到我的节点 JS。 我问了几个问题,但都没有解决。
我的 SQL Server 登录凭据是-
server type : Database Engine
Server name : DESKTOP-MPF88ST\KUSHAL
authentication : sql server authentication
login : username
password : password
我想要的数据库是 schoolDB 我的代码是这样的
const sql =require("mssql")
const config =
login: 'username',
password:'password',
server: 'localhost',
database: "schoolDB",
options :
enableArithAbort: true
,
port : 1433
sql.connect(config, (err) =>
if(err)
console.log(err);
else
console.log("Connected")
我启用并设置了我的 TCP/IP,启用了 SQL Server 浏览器,但它仍然抛出错误-
ConnectionError: Failed to connect to localhost:1433 - Could not connect (sequence)
at Connection.<anonymous> (E:\Kushals\server\node_modules\mssql\lib\tedious\connection-pool.js:68:17)
at Object.onceWrapper (events.js:422:26)
at Connection.emit (events.js:315:20)
at Connection.socketError (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connection.js:1290:12)
at E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connection.js:1116:21
at SequentialConnectionStrategy.connect (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connector.js:87:14)
at Socket.onError (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connector.js:100:12)
at Socket.emit (events.js:315:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
code: 'ESOCKET',
originalError: ConnectionError: Failed to connect to localhost:1433 - Could not connect (sequence)
at ConnectionError (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\errors.js:13:12)
at Connection.socketError (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connection.js:1290:56)
at E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connection.js:1116:21
at SequentialConnectionStrategy.connect (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connector.js:87:14)
at Socket.onError (E:\Kushals\server\node_modules\mssql\node_modules\tedious\lib\connector.js:100:12)
at Socket.emit (events.js:315:20)
at emitErrorNT (internal/streams/destroy.js:92:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
code: 'ESOCKET'
我该如何解决??
【问题讨论】:
您的服务器名称是DESKTOP-MPF88ST\KUSHAL
,但您指定了本地主机。您需要指定server : "DESKTOP-MPF88ST\KUSHAL"
@PrebenHuybrechts 也尝试过这样做......没有帮助。仍然是完全相同的错误....
@Preben 在命令行中 ping DESKTOP-MPF88ST 看看你得到了什么,那是你所在的机器吗?当你不再使用 localhost 时,你怎么能得到完全相同的错误?
我认为你们没有得到它,当您启动 SQL Server Management Studio 时,您被要求登录,“服务器名称”字段设置为该值。那可能不是真正的服务器,我ping了一下,cmd说Ping request could not find host DESKTOP-MPF88ST\KUSHAL. Please check the name and try again.
@KushalChowdhury 您被要求 ping 计算机名称 DESKTOP-MPF88ST,而不是服务器实例名称 DESKTOP-MPF88ST\KushAL。
【参考方案1】:
试试这个:
const sql = require('mssql/msnodesqlv8')
const pool = new sql.ConnectionPool(
login: 'username',
password:'password',
database: 'schoolDB',
server: 'DESKTOP-MPF88ST\KUSHAL',
driver: 'msnodesqlv8',
options:
trustedConnection: true
)
pool.connect().then(() =>
//sample query
pool.request().query('select 1 as number', (err, result) =>
console.dir(result)
)
)
【讨论】:
不,兄弟,它崩溃了,说找不到模块 msnodesqlv8 所以用 npm 安装它? 啊,抱歉,没有意识到这是一个不同的包。是的,现在它正在工作。非常感谢 !!另外,你能帮我找出我的代码到底出了什么问题吗?? 使用默认驱动你根本无法通过 windows 域登录 @KushalChowdhury 别忘了您也输入了错误的连接信息。【参考方案2】:确保 TCP/IP 协议已启用,因为它默认处于禁用状态。
步骤:
进入计算机管理
在服务和应用程序下 -> SQL Server 配置管理器 -> SQL Server 网络配置 -> 点击“Protocols for MSSQLSERVER”
您将看到 TCP/IP 部分(启用右键单击并启用它)
【讨论】:
我启用了 TCP/IP,我在很多地方都看到了它,这就是为什么我先配置它,我在帖子中也提到过。以上是关于为啥我不能将 SQL Server 连接到我的节点 js的主要内容,如果未能解决你的问题,请参考以下文章
tsql 实用程序 (FreeTDS) 可以连接到 SQL Server,但 pymssql 不能
无法将 jdbc 连接到 sql server 2008 r2
为啥我的一些 kubernetes 节点无法连接到我的 postgres 集群而其他节点成功?