我正在尝试从一台运行在网络上的Windows 10机器上连接到一个安装有SQL Server Express数据库的系统,我的Macbook运行以下代码。我可以使用tedious
连接,但无法使用mssql
连接。就像用户名或密码不正确一样。我想让mssql
工作是为了池化和更好的支持...否则我会使用tedious
。这段代码创建了两个连接,输出显示了tedious
正在连接,但mssql
失败。
const express = require('express');
const sql = require('mssql');
const bodyParser = require('body-parser');
const app = express();
var Connection = require('tedious').Connection;
// Body Parser Middleware
app.use(bodyParser.json());
// CORS Middleware
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
// define listineng port
const PORT = 5006;
// define tedious config
var config = {
server: "JAMBER-VR1.local",
userName: "testuser",
password: "testuserpass",
database: "SQLEXPRESS",
options: {
encrypt: false
}
};
var connection = new Connection (config);
connection.on('connect', function(err){
if(err!=null){
console.log(err);
console.log("not connected - tedious");
}
else{
console.log("Connected - tedious")
connection.close();
};
});
// Define SQL config
const dbConfig = {
user: 'testuser',
password: 'testuserpass',
server: 'JAMBER-VR1.local',
database: 'SQLEXPRESS',
// port: 1433,
// logging: true,
options: {encrypt: false},
pool: {
max: 100,
min: 0,
idleTimeoutMillis: 30000
}
}
const executeQuery = async () => {
try {
let pool = await sql.connect(dbConfig);
console.log("pool connected - mssql");
let result = await pool.request()
.input('input_parameter', sql.Int, value)
.query('select * from donor')
console.log("Result: ", result);
} catch (err) {
console.log("Error: ", err);
}
}
executeQuery();
我遇到了以下错误: [nodemon] 启动
node index.js
正在运行在端口5006上
已连接 - tedious
错误:{ ConnectionError: 用户'testuser'登录失败。
在Connection.tedious.once.err中的 /Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/mssql/lib/tedious.js:237:17
在Object.onceWrapper (events.js:273:13)中
在Connection.emit (events.js:182:13)中
在Connection.processLogin7Response (/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/tedious/lib/connection.js:1292:16)
在Connection.message (/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/tedious/lib/connection.js:1805:14)
在Connection.dispatchEvent (/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/tedious/lib/connection.js:1004:38)
在MessageIO. (/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/tedious/lib/connection.js:884:18)
在MessageIO.emit (events.js:182:13)
在ReadablePacketStream. (/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/tedious/lib/message-io.js:104:16)
在ReadablePacketStream.emit (events.js:182:13)
代码:'ELOGIN',
原始错误:
{ ConnectionError: 用户'testuser'登录失败。
在ConnectionError(/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/tedious/lib/errors.js:12:12)
在Parser.(/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/tedious/lib/connection.js:628:33)
在Parser.emit(events.js:182:13)
在Parser.(/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/tedious/lib/token/token-stream-parser.js:54:15)
在Parser.emit(events.js:182:13)
在addChunk(/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/readable-stream/lib/_stream_readable.js:291:12)
在readableAddChunk(/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/readable-stream/lib/_stream_readable.js:278:11)
在Parser.Readable.push(/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/readable-stream/lib/_stream_readable.js:245:10)
在Parser.Transform.push(/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/readable-stream/lib/_stream_transform.js:148:32)
在doneParsing(/Users/jordanszymczyk/Code/TRTL/server_sql/node_modules/tedious/lib/token/stream-parser.js:110:18)
消息:'用户'testuser'登录失败。',
代码:'ELOGIN'},
名称:'ConnectionError'
你可以看到控制台输出了"Connected - tedious",然后紧接着就是mssql错误。
我也尝试使用本地IP,但结果相同。
通过sqlcmd测试则正常。