使用Windows身份验证using this连接到SQL Server数据库,其中说要添加选项; “ trustedConnection:true”。使用以下代码,我已经能够在过去三个月中成功查询数据库,没有任何问题。
const configMssql =
{
"server": "(servername)",
"driver": "msnodesqlv8",
"database": "Service",
"options": {
"trustedConnection": true
},
"connectionTimeout": 300000,
"requestTimeout": 300000,
"pool": {
"idleTimeoutMillis": 300000,
"max": 100
}
}
var conn = new sql.ConnectionPool(configMssql);
conn.connect().then(() => {
// query...
}.catch((err) => {
console.log(err);
});
但是,今天,当我运行我的代码(未更改)时,出现此错误:
{ RequestError: Access to the remote server is denied because no login-mapping exists.
at StreamEvents.req.once.err (C:\Users\pa\Documents\Work\spares_list_generator\node_modules\mssql\lib\msnodesqlv8.js:612:17)
at Object.onceWrapper (events.js:277:13)
at StreamEvents.emit (events.js:189:13)
at errors.forEach.err (C:\Users\pa\Documents\Work\spares_list_generator\node_modules\msnodesqlv8\lib\reader.js:30:20)
at Array.forEach (<anonymous>)
at routeStatementError (C:\Users\pa\Documents\Work\spares_list_generator\node_modules\msnodesqlv8\lib\reader.js:23:14)
at invokeObject.end (C:\Users\pa\Documents\Work\spares_list_generator\node_modules\msnodesqlv8\lib\reader.js:244:13)
at freeStatement (C:\Users\pa\Documents\Work\spares_list_generator\node_modules\msnodesqlv8\lib\driver.js:157:13)
at cppDriver.freeStatement (C:\Users\pa\Documents\Work\spares_list_generator\node_modules\msnodesqlv8\lib\driver.js:147:11)
code: 'EREQUEST',
number: 7416,
state: undefined,
originalError:
{ Error: [Microsoft][SQL Server Native Client 11.0][SQL Server]Access to the remote server is denied because no login-mapping exists. sqlstate: '42000', code: 7416 },
name: 'RequestError' }
因此,我进入Microsoft SQL Server Management Studio以手动执行此查询,以确保问题不在数据库中,并且很好,它可以正常工作。在SQL Server Management Studio中,我也使用Windows身份验证。因此,问题出在代码上。因此,我查找了问题并遇到了this。连接到数据库的脚本将由多个用户使用,这就是为什么我使用Windows身份验证的原因。
我尝试使用我的用户名进行尝试,只是为了查看它是否有效,但出现相同的错误。我使用不正确吗? (请参见下面的代码)
const configMssql =
{
"server": "TXUDBSAZU002",
"User ID":"myuser",
"driver": "msnodesqlv8",
"database": "TRU_Service",
"options": {
"trustedConnection": true
},
"connectionTimeout": 300000,
"requestTimeout": 300000,
"pool": {
"idleTimeoutMillis": 300000,
"max": 100
}
}
但是,如果此解决方案有效,则必须输入用户名,这不是我想要的。还有什么我可以尝试的想法吗?