mssql 接続インターフェイスでNodeJSを使用してMSSQL 2012に接続しようとしています。
接続しようとすると、次のエラーが表示されます。
{ [ConnectionError: Failed to connect to localhost:1433 - connect ECONNREFUSED]
name: 'ConnectionError',
message: 'Failed to conncet to localhost:1433 - connect ECONNREFUSED',
code: 'ESOCKET' }
これを修正する方法についてのアイデアはありますか?
解決策は、TCPデフォルトで無効になっている接続を有効にすることです。
私の場合はマットの場合とまったく同じではありませんでしたが、彼のスクリーンショットは何が欠けているかを思い出すのに十分でした。
here と言われているように、SQL Serverインスタンス名を使用して接続するには、SQL Server Browserを実行する必要があります。
options.instanceName接続するインスタンス名。 SQL Server Browserサービスがデータベースサーバーで実行されている必要があり、データベースサーバーのUDPポート1444に到達できる必要があります。 (デフォルトなし)options.portと相互に排他的。
TCP接続を有効にした後でも設定が機能しない場合。ここに自分の設定があります。
var config = {
"user": 'admin',
"password": 'password',
"server": 'ALBERT-PC',
"database": 'database_name',
"port": '61427',
"dialect": "mssql",
"dialectOptions": {
"instanceName": "SQLEXPRESS"
}
};
提案されたすべてを実行しても、誰かがまだ接続に苦労している場合。
私の場合、手動でTCPポートプロパティをSQL Serverネットワーク構成の1433に設定する必要がありました->のプロトコル...-> TCP/IP-> IPアドレス-> IPAll。
[
ベストプラクティスは、アプリケーションで使用するのと同じプロトコル、ポート、および資格情報を使用するクエリアナライザー(SQL Management Studio(Windows)またはSQLPro for MSSQL(Mac))を使用して、最初にSQLサーバーへの接続を確認することです。
Management Studioでは、形式はServer、Port(e.g. 192.168.1.10,1433);おそらくWindows認証の代わりにSQL Server認証を使用しているでしょう。
SQL Serverを構成する手順:
SQL Server認証を使用する場合は、混合認証でインストールします。
固定ポート番号でTCPでリッスンするようにSQL Serverをセットアップします。
**Please follow the connection configuration and little test:**
//Declare global variable
var http = require('http');
var events = require('events');
var nodemailer = require('nodemailer');
var sql = require('mssql');<br/>
var Request = require('tedious').Request;
var TYPES = require('tedious').TYPES;
//Create an http server
http.createServer(function(req,res)
{
res.writeHead(200, {'Content-Type': 'text/html'});
var Connection = require('tedious').Connection;
//Configure the connection
var config = {
userName: '<user id>',
password: '<password>',
server: '<system ip>',
options: {database: '<database name>'}
};
var connection = new Connection(config);
connection.on('connect', function(err) {
console.log("Connected");
executeStatement();
});
function executeStatement() {
request = new Request("select getdate();", function(err) {
if (err) {
console.log(err);}
});
var result = "";
request.on('row', function(columns) {
columns.forEach(function(column) {
if (column.value === null) {
console.log('NULL');
} else {
result+= column.value + " ";
}
});
console.log(result);
result ="";
});
connection.execSql(request);
};
return res.end();
}).listen(8080);
//ブラウザで設定テストを送信: http:// localhost:8080 /
SQL Management Studioや他のアプリケーションで「localhost」を使用しているのに、「localhost」に接続できませんでした。コンピューター名(ネットワークアドレス)を使用すると、機能しました!