Adr*_*rma 0 sql-server connection-string windows-authentication node.js knex.js
我正在尝试使用knex与我的 node.js 应用程序中的 Windows 身份验证连接 SQL Server 。
配置:
{
client: 'mssql',
connection: {
database: 'MyDBName',
host: 'xx.xx.xx.xxx',
server: 'MY-SERVER_NAME\\SQLEXPRESS',
options: {
encrypt: false,
trustedConnection: true,
},
},
}
Run Code Online (Sandbox Code Playgroud)
我没有在配置中添加用户名和密码,因为我trustedConnection: true为Windows 身份验证添加了用户名和密码。
但我收到以下错误:
用户“”登录失败。
即使我添加添加用户名和密码,我也会收到相同的错误。
任何建议都会有很大帮助。谢谢
knexmssql依次使用tedious或msnodesqlv8。tedious不支持 Windows 身份验证。默认为tedious. 尝试与 Windows 身份验证一起使用tedious会导致Login failed for user ''....。完整的错误消息是:
(node:16568) UnhandledPromiseRejectionWarning: ConnectionError: Login failed for user ''.
at Connection.<anonymous> (K:\testprojects\nodesql\node_modules\mssql\lib\tedious.js:244:17)
at Object.onceWrapper (events.js:291:20)
at Connection.emit (events.js:203:13)
at Connection.processLogin7Response (K:\testprojects\nodesql\node_modules\mssql\node_modules\tedious\lib\connection.js:1397:14)
at Connection.message (K:\testprojects\nodesql\node_modules\mssql\node_modules\tedious\lib\connection.js:1932:14)
at Connection.dispatchEvent (K:\testprojects\nodesql\node_modules\mssql\node_modules\tedious\lib\connection.js:1084:36)
at MessageIO.<anonymous> (K:\testprojects\nodesql\node_modules\mssql\node_modules\tedious\lib\connection.js:984:14)
at MessageIO.emit (events.js:203:13)
at Message.<anonymous> (K:\testprojects\nodesql\node_modules\mssql\node_modules\tedious\lib\message-io.js:32:14)
at Message.emit (events.js:208:15)
Run Code Online (Sandbox Code Playgroud)
这清楚地表明来源是tedious。
为了得到这个,我使用了这个片段:
const sql = require("mssql");
const config = {
database: "Master",
server: "myserver",
options: {
trustedConnection: true
}
};
(async () => {
await sql.connect(config)
const result = await sql.query`select name from sys.databases`
console.dir(result)
})()
Run Code Online (Sandbox Code Playgroud)
该文档解释说您需要使用const sql = require("mssql/msnodesqlv8");来使用msnodesqlv8,例如:
const sql = require("mssql");
const config = {
database: "Master",
server: "myserver",
options: {
trustedConnection: true
}
};
Run Code Online (Sandbox Code Playgroud)
进行此更改后,查询将运行并生成数据库名称列表
不幸的是,这对 没有帮助knex,因为它直接加载和使用 tedious。不管代码注释如何,msnodesqlv8仍在积极维护,并且仅在 4 天前发布。
| 归档时间: |
|
| 查看次数: |
8676 次 |
| 最近记录: |