node.js 怎么连接mssql数据库,最好有简易的方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node.js 怎么连接mssql数据库,最好有简易的方法相关的知识,希望对你有一定的参考价值。
参考技术A 选择开始菜单中→程序→【ManagementSQL
Server
2008】→【SQL
Server
Management
Studio】命令,打开【SQL
Server
Management
Studio】窗口,并使用Windows或
SQL
Server身份验证建立连接。
在【对象资源管理器】窗口中展开服务器,然后选择【数据库】节点
右键单击【数据库】节点,从弹出来的快捷菜单中选择【新建数据库】命令。
执行上述操作后,会弹出【新建数据库】对话框。在对话框、左侧有3个选项,分别是【常规】、【选项】和【文件组】。完成这三个选项中的设置会后,就完成了数据库的创建工作,
在【数据库名称】文本框中输入要新建数据库的名称。例如,这里以“新建的数据库”。
在【所有者】文本框中输入新建数据库的所有者,如sa。根据数据库的使用情况,选择启用或者禁用【使用全文索引】复选框。
在【数据库文件】列表中包括两行,一行是数据库文件,而另一行是日记文件。通过单击下面的【添加】、【删除】按钮添加或删除数据库文件。
切换到【选项页】、在这里可以设置数据库的排序规则、恢复模式、兼容级别和其他属性。
切换到【文件组】页,在这里可以添加或删除文件组。
完成以上操作后,单击【确定】按钮关闭【新建数据库】对话框。至此“新建的数据”数据库创建成功。新建的数据库可以再【对象资源管理器】窗口看到。
Node.js 与 SQL Server Windows 身份验证的连接
【中文标题】Node.js 与 SQL Server Windows 身份验证的连接【英文标题】:Node.js Connection with SQL Server windows authentication 【发布时间】:2017-11-18 11:10:56 【问题描述】:我正在尝试在 Windows 身份验证模式下将 node.js
连接到 mssql
。我安装了tedious
、mssql
和msnodesqlv8
模块,但我仍然不知道如何打开连接。
这是我尝试过的:
var sql = require('mssql');
var config =
driver: 'msnodesqlv8',
server: 'POPPY-GI\\SQLEXPRESS',
database: 'NodinSports',
options:
trustedConnection: true,
useUTC: true
sql.connect(config).then(function()
new sql.Request().query('select * from users')
.then(function(recordset)
console.log(recordset);
).catch(function(err)
console.log(err););
).catch(function(err)
console.log(err););
运行后我收到一个很长的错误提示:
`ConnectionError`: Port for `SQLEXPRESS` not found in
`ServerName`;POPPYGI;`InstanceName;SQLEXPRESS;IsClustered`;No;Version;12.0.2000.8;;
at Connection.tedious.once.err (D:\Never Lazy\University\`AN2, SEM 2\WEB\`Projek`\node_modules\`mssql`\lib\`tedious.js:216:17`)
at Connection.g (events.js:291:16)
at emitOne (events.js:96:13)
at Connection.emit (events.js:188:7)
at D:\Never Lazy\University\AN2,SEM2\WEB\Projekt\node_modules\tedious\lib\connection.js:570:27
at D:\Never Lazy\University\AN2,SEM2\WEB\Projekt\node_modules\tedious\lib\instance-lookup.js:91:24
at Socket.onMessage (D:\Never Lazy\University\AN2,SEM2\WEB\Projekt\node_modules\tedious\lib\sender.js:140:9)
at emitTwo (events.js:106:13)
at Socket.emit (events.js:191:7)
at UDP.onMessage (dgram.js:549:8)
code: 'EINSTLOOKUP',
如果能提供任何帮助,我将不胜感激。
已修复:
在services.msc
中检查以下是否启用:
SQL Server(*server_name*) -- in my case `SQLEXPRESS`
SQL Server Browser
SQL Server Agent(*server_name*) -- if you are using `SQLEXPRESS` this doesn't need to run
在 SQL Server 配置管理器中 -> server_name 的协议:启用 TCP/IP
。
为确保一切正常,请检查服务器正在使用的端口(SQL Server 配置管理器 -> SQL Native Client 配置 -> 客户端协议 -> 双击 TCP/IP
->默认端口 ) ,并将port: *your_port*
添加到var config = ...
中的代码中。
最后,将var sql = require('mssql');
更改为var sql = require("mssql/msnodesqlv8");
【问题讨论】:
POPPYGI 是远程服务器吗? SQL Browser 服务是否正在运行?您可以使用 SSMS 连接到此实例吗?服务实际使用的是什么端口(SQL 日志会告诉你)? 本地服务器,SQL Browser 服务正在运行,端口为 1433。我不太明白“使用 SSMS 连接到此实例”是什么意思。我将端口:1433 添加到“配置”中,现在我收到一条错误消息:ConnectionError: Login failed for user ' '.
[...]
感谢您的帮助,问题已解决。 ^_^
如果你解决了你的问题,you can answer your own question!这也会将其从未应答队列中删除。
【参考方案1】:
安装以下模块:
"dependencies":
"msnodesqlv8": "^0.4.14",
"mssql": "^4.1.0"
我的节点版本:v8.1.4
const sql = require("mssql/msnodesqlv8");
const main = async () =>
const pool = new sql.ConnectionPool(
server: "myservername",
database: "mydbname",
options:
trustedConnection: true
);
await pool.connect();
const request = new sql.Request(pool);
const query = `SELECT [FirstName]
,[LastName]
,[Email]
FROM [Dev].[Users]`;
const result = await request.query(query);
console.dir(result);
;
main();
(你可以在没有异步或旧版本的情况下做到这一点:https://***.com/a/40406998/639575)
【讨论】:
如果我没记错的话,msnodesqlv8只能在Windows上运行……在其他平台上怎么办? 上一个节点版本的软件包版本做得很好!【参考方案2】:beatoss 给出的解决方案适用于 windows,但不适用于 Linux/mac。 msnodesqlv8 驱动程序仅适用于 Windows。对于 Linux/mac 环境,请改用odbc。
【讨论】:
嘿,你的答案应该是针对问题而不是一般问题,不过你可以编辑你的答案。【参考方案3】:现在回答可能为时已晚,但这件事最近发生在我身上,让我发疯了!!!我试图将我的数据库连接到 express 并且我正在使用 Windows 身份验证模式。两天来,我一直在谷歌上搜索和刷新,直到我得到这篇文章:https://www.liquidweb.com/kb/troubleshooting-microsoft-sql-server-error-18456-login-failed-user/
简而言之;
首先我安装了msnodesqlv8
驱动程序进行windows身份验证,然后在我的ssms服务器上,我右键单击我的服务器,然后在属性和安全中,我启用了sql server和windows身份验证模式,然后在对象资源管理器中,点击服务器旁边的加号,然后是安全性,然后是登录。在那里我看到sa
旁边有一个十字架。在它的属性中,我将密码更改为更容易记住的密码(可选),然后在状态中,将登录设置为启用。呸!
现在我的配置代码:
const config =
user: 'sa',
password: '123',
driver: "msnodesqlv8",
server: 'UZAIR-S_PC\\SQLEXPRESS',
database: 'LearningExpressJS',
options:
trustedconnection: true,
enableArithAbort : true,
trustServerCertificate: true,
instancename : 'SQLEXPRESS'
,
port: 58018
终于成功了!!!!!!!!!!!!!!!
【讨论】:
以上是关于node.js 怎么连接mssql数据库,最好有简易的方法的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Node.js 为所有连接最好地实现 HTTPS?
是否可以在没有准备好的语句(Node.js 和 MSSQL)的情况下防止 SQL 注入
sequelize 用于PostgreSQL,MySQL,SQLite和MSSQL的Node.js / io.js ORM