我有一个在本地机器上运行 Ubuntu 的虚拟机。我已经安装了 nodejs 以及繁琐的 mssql 驱动程序。我正在尝试从查询中从远程 mssql 服务器中提取数据并返回 json。
我已经阅读了相当多的文档,我想回答的第一个问题是您是否必须在 Windows 机器上运行 Nodejs 才能连接到 mssql 服务器?
(我的印象是使用标准 nodejs windows 驱动程序时就是这种情况。)
第二个问题我已经完成了我的所有流程并且节点服务器运行良好,但是当我进行 mssql 调用时,我收到以下错误:
Invalid state; requests can only be made in the LoggedIn state, not the SentLogin7WithStandardLogin state
我没有发现其他任何人遇到与我相同的情况遇到此错误。我已尝试按照此修复程序中的建议发送带有对象形成的请求。
如何从 NodeJS/Tedious 连接到 SQL Azure?
我仍然遇到与前面提到的相同的错误。所以这里是代码。我正在使用restify,希望只是为我的nodejs服务器制作一个restful api,并从我的mssql调用中吐回json。
var restify = require('restify');
var Connection = require('tedious').Connection;
var server = restify.createServer();
server.listen(8080,function(){
console.log('%s listening at %s',server.name,server.url);
server.get('/GetInfo',GetInfo);
});
function GetInfo(req, res, next){
console.log('Starting GetInfo function ...');
res.header('Content-Type:application/json');
var config = {
user:'awesomeusername',
password:'awesomepassword',
server:'coolservername',
options:{
encrypt:true,
database:'TableName'
}
};
var connection = new Connection(config);
var Request = require('tedious').Request;
var sql = "SELECT ColumnName FROM Database.dbo.TableName";
connection.on('connect',function(err){
request = new Request(sql,function(err,rowCount){
if(err){
res.write(err);
console.log('got an error %s',err)
}else{
res.write(rowCount+'rows');
}
});
request.on('row',function(columns){
columns.forEach(function(column){
res.write(column.value);
});
});
connection.execSql(request);
});
}
所以你有我是一个完整的nodejs新手,我想我会试一试。任何提示或信息表示赞赏。提前致谢。