Ответ 1
Решение состоит в том, чтобы включить TCP-соединения, которые по умолчанию отключены.
Я пытаюсь подключиться к MSSQL 2012 с помощью NodeJS с интерфейсом mssql.
При попытке подключения я получаю следующую ошибку:
{ [ConnectionError: Failed to connect to localhost:1433 - connect ECONNREFUSED]
name: 'ConnectionError',
message: 'Failed to conncet to localhost:1433 - connect ECONNREFUSED',
code: 'ESOCKET' }
Любые идеи о том, как исправить это?
Решение состоит в том, чтобы включить TCP-соединения, которые по умолчанию отключены.
Мое дело было не совсем таким же, как у Мэтта, но его скриншота было достаточно, чтобы запомнить меня, чего не хватало.
Как сказано здесь, когда вы используете имя экземпляра SQL Server для подключения к нему, у вас должен быть запущен браузер SQL Server.
options.instanceName Имя экземпляра для подключения. Служба сервера SQL Server должна быть запущена на сервере базы данных, а 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 Port значение 1433 в Конфигурация сети SQL Server → Протоколы для... → TCP/IP → IP-адреса → IPAll.
[
Лучше всего сначала проверить подключение к SQL-серверу с помощью анализатора запросов (SQL Management Studio (Windows) или SQLPro для MSSQL (Mac)) с использованием того же протокола, порта и учетных данных, которые вы хотите использовать через приложение.
В Management Studio формат - это сервер, порт (например, 192.168.1.10, 143); и вы, вероятно, будете использовать аутентификацию SQL Server вместо проверки подлинности Windows.
Шаги по настройке SQL Server:
Установить с помощью смешанной проверки подлинности, если вы собираетесь использовать аутентификацию SQL Server.
Установите SQL Server для прослушивания TCP по фиксированному номеру порта:
**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/
Я не мог подключиться к "localhost", хотя я использую "localhost" в SQL Management Studio и других приложениях. Когда я использовал имя компьютера (сетевой адрес), он сработает!
Еще одна довольно забавная/глупая причина, по которой он может не подключаться, это потому, что если имя вашего сервера включает в себя имя хоста/домен в его имени, вам нужно убедиться, что вы используете 2 обратных слеша... в моем случае у меня было
сервер: имя_хоста_машины\имя_сервера, вместо имени_хоста_машины\имя_сервера