Node.js и Microsoft SQL Server
Есть ли способ заставить мое приложение Node.js связываться с Microsoft SQL?
Я не видел никаких драйверов MS SQL в дикой природе?
Я собираю очень простое приложение и должен иметь возможность общаться с существующей базой данных MS SQL (иначе я бы отправился с mongoDB или Redis)
Ответы
Ответ 1
Мы только что выпустили драйверы предварительного просмотра для Node.JS для подключения к SQL Server. Вы можете найти их здесь:
http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx
Ответ 2
Оригинальный вопрос старый и теперь используется node-mssql, как ответил @Patrik Šimek, который завершает Tedious, как ответил @Tracker1, это лучший способ пойти.
Windows/Azure node -sqlserver driver, как указано в принятом ответе, требует установки сумасшедшего списка предварительных условий: Visual С++ 2010, SQL Server Native Client 11.0, python 2.7.x и, возможно, также Windows 7 SDK для 64-бит на вашем сервере. Вы не хотите устанавливать все эти ГБ программного обеспечения на свой Windows Server, если вы спросите меня.
Вы действительно хотите использовать Tedious. Но также используйте node-mssql, чтобы обернуть его и сделать кодирование намного проще.
Обновление в августе 2014 года
- Оба модуля все еще активно поддерживаются. Вопросы реагируют довольно быстро и эффективно.
- Оба модуля поддерживают SQL Server 2000 - 2014
- Поддержка потоковой передачи с node -mssql 1.0.1
Обновление февраль 2015 г. - 2.x(стабильный, npm)
- Обновлено до последней версии Tedious 1.10
- Promises
- Запрос трубы на поток объекта
- Подробные ошибки SQL
- Обработка прерывания транзакции
- Проверки интегрированного типа
- CLI
- Незначительные исправления
Это просто Tedious:
var Connection = require('tedious').Connection;
var Request = require('tedious').Request;
var config = {
server: '192.168.1.212',
userName: 'test',
password: 'test'
};
var connection = new Connection(config);
connection.on('connect', function(err) {
executeStatement();
}
);
function executeStatement() {
request = new Request("select 42, 'hello world'", function(err, rowCount) {
if (err) {
console.log(err);
} else {
console.log(rowCount + ' rows');
}
connection.close();
});
request.on('row', function(columns) {
columns.forEach(function(column) {
if (column.value === null) {
console.log('NULL');
} else {
console.log(column.value);
}
});
});
request.on('done', function(rowCount, more) {
console.log(rowCount + ' rows returned');
});
// In SQL Server 2000 you may need: connection.execSqlBatch(request);
connection.execSql(request);
}
Здесь node-mssql, который имеет Tedious как зависимость. Используйте это!
var sql = require('mssql');
var config = {
server: '192.168.1.212',
user: 'test',
password: 'test'
};
sql.connect(config, function(err) {
var request = new sql.Request();
request.query("select 42, 'hello world'", function(err, recordset) {
console.log(recordset);
});
});
Ответ 3
Несколько новых node.js клиентов SQL-сервера недавно выпущены. Я написал один под названием node-tds, и есть еще один tedious
Ответ 4
Возможно, вы можете использовать node -tds.js:
Увлекательная реализация протокола TDS для node.js для связи с сервером sql...
ПРИМЕНЕНИЕ:
var mssql = require('./mssql');
var sqlserver = new mssql.mssql();
sqlserver.connect({'Server':__IP__,'Port':'1433','Database':'','User Id':'','Password':''});
var result = sqlserver.execute("SELECT * FROM wherever;");
Ответ 5
Существует еще один модуль, который вы можете использовать - node-mssql. Он использует другие модули TDS в качестве драйверов и предлагает простой в использовании унифицированный интерфейс. Он также добавляет дополнительные функции и исправления ошибок.
Дополнительные функции:
- Унифицированный интерфейс для нескольких драйверов MSSQL
- Пул соединений с транзакциями и подготовленными операциями
- Параметрированные хранимые процедуры для всех драйверов
- Сериализация типов CLR географии и геометрии
- Интеллектуальный тип данных JS для типа данных данных SQL
- Поддержка как Promises, так и стандартных обратных вызовов
Ответ 6
(дублируя мой ответ из другого вопроса).
Я бы порекомендовал node-mssql, что является хорошей оболочкой для других коннекторов, по умолчанию это мой предыдущий выбор (Tedious), что немного облегчает интерфейс. Это экспломатизация JavaScript, без требований к компиляции, что означает, что вы можете работать как в окнах, так и в не-окнах.
Другой вариант, если вы не возражаете подключиться .Net или Mono с бинарным мостом, будет использовать edge.js. Что может быть очень приятно, если вы хотите использовать библиотеки .NET в node.js
node-tds заброшено, node-odbc не работает с окнами, а драйвер MS node-sqlserver, похоже, не работает на не-окнах (и имеет некоторые противоречивые требования).
Ответ 7
TSQLFTW - T-SQL для WIN (dows) - от Fosco Marotto
https://github.com/gfosco/tsqlftw
Это управляемое кодовое решение на С# и ADO.NET, с оберткой С++, с которой может импортироваться и работать Node.js.
Если вы знаете .NET, вы можете попробовать службы данных WCF (службы данных ADO.NET); написать приложение WCF для доступа к данным и использовать odata (REST на стероидах) для взаимодействия с базой данных
Если вы работаете в SOA и используете SQL Server 2005, вы можете проверить собственные веб-службы XML для Microsoft SQL Server 2005
http://msdn.microsoft.com/en-us/library/ms345123(v=sql.90).aspx
Вы можете получить доступ к SQL Server в качестве веб-службы (HTTP, SOAP)
Ответ 8
Microsoft (команда Windows Azure) только что выпустила драйвер node для SQL SERVER.
У него нет пакета для npm yert, насколько я знаю, но он открыт. И принимающий вклад сообщества тоже.
https://github.com/WindowsAzure/node-sqlserver
Введение в блог:
http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx
Ответ 9
Если вы работаете в .NET, посмотрите на entityspaces.js at, мы создаем целую универсальную ORM для Node.js, которая не потребует службы WCF JSON... https://github.com/EntitySpaces/entityspaces.js
Если вы используете бэкэнд-технологию MSFT, вы можете использовать ее сейчас, однако мы создаем универсальную Node.js ORM и будем иметь больше информации об этом скоро
Ответ 10
Существует обновление от Microsoft. Вот серия сообщений в блогах (часть 1 и часть 2).
Ответ 11
Node.js Драйверы SQL Server кажутся очень незрелыми - есть мишень различных проектов с различными зависимостями, производительностью и уровнем полноты, ни одна из которых не внушает доверия.
Я бы предложил использовать edge-sql. Это использует экосистему среды разработки .NET с зрелой базой данных и зависит только от .NET(без проблем, если вы используете node для Windows - если нет Mono, но я этого не пробовал).
Вот пример node (server.js) с использованием edge-sql (обратите внимание, что вам нужно поместить строку подключения в переменную среды в соответствии с документами edge-sql):
var edge = require('edge');
// edge-sql has built in support for T-SQL / MSSQL Server
var getData = edge.func('sql', function () {/*
select top 10 * from sometable
*/
});
getData(null, function (error, result) {
if (error) throw error;
console.log(result);
});
Вы также можете использовать Edge.js с .NET для доступа к другим базам данных, таким как Oracle. Я привел пример такого подхода здесь.
Ответ 12
Статус на май 2016 года выглядит следующим образом.
Официальный драйвер Microsoft SQL для Node, называемый node-sqlserver, не обновлялся в течение нескольких лет.
В этом объявлении есть новая вилка node-sqlserver-v8, которая работает с Node версиями 0.12.x. и >= 4.1.x. Эта вилка также имеет предварительно скомпилированные двоичные файлы для целей x64 и x86.
Пакет доступен на NPM как msnodesqlv8.
Я рекомендую этот пакет, потому что он легкий (не имеет зависимостей), и он является единственным, который работает со всей последней версией SQL Server, включая SQL LocalDB.
Ответ 13
Теперь (2016) вы можете использовать Sequelize ORM, который поддерживает:
- MySQL/MariaDB,
- PostgreSQL
- SQLite
- Microsoft SQL Server
Он широко используется в соответствии с его звездами Github.
Ответ 14
который связывает детали только с SQL 2000, а не с sql 2005 и sql 2008, а также этот код позволяет отправлять только текст sql и не позволяет выполнять хранимые процедуры.
Реальное решение заключалось бы в установке node JS на сервере linux или на виртуальном Linux-сервере на машине Windows, а затем перейдите на веб-сайт Microsoft и загрузите java-драйверы JDBC и установите эти microsoft ms sql java jdbc на сервере Linux или виртуальном сервере Linux.