Node.js и Microsoft SQL Server - PullRequest
       117

Node.js и Microsoft SQL Server

69 голосов
/ 01 марта 2011

Можно ли как-нибудь настроить приложение Node.js для взаимодействия с Microsoft SQL?Я не видел никаких драйверов MS SQL там в дикой природе?

Я собираю очень простое приложение вместе, и мне нужно иметь возможность общаться с существующей базой данных MS SQL (в противном случае я бы пошелmongoDB или Redis)

Ответы [ 14 ]

50 голосов
/ 26 марта 2014

Исходный вопрос устарел и теперь использует node-mssql , на который отвечает @Patrik Šimek, обертывающий Tedious , на который отвечает @ Tracker1, - лучший путь.

Драйвер для Windows / Azure node-sqlserver , как упомянуто в принятом ответе, требует от вас установки сумасшедшего списка необходимых условий: Visual C ++ 2010, SQL Server Native Client 11.0, python 2.7.x и, возможно, также Windows 7 SDK для 64-разрядных на вашем сервере. Вы не хотите устанавливать все эти ГБ программного обеспечения на свой Windows Server, если вы спросите меня.

Вы действительно хотите использовать Утомительно . Но также использует node-mssql , чтобы обернуть его и сделать кодирование намного проще.

Обновление август 2014

  • Оба модуля по-прежнему активно поддерживаются. На вопросы реагируют довольно быстро и эффективно.
  • Оба модуля поддерживают SQL Server 2000 - 2014
  • Потоковая поддержка поддерживается, так как node-mssql 1.0.1

Обновление февраль 2015 г. - 2.x (стабильный, npm)

  • Обновлено до последней версии Tedious 1.10
  • Обещания
  • Запрос канала к потоку объекта
  • Подробные ошибки SQL
  • Обработка отмены транзакции
  • Интегрированные проверки типов
  • CLI
  • Незначительные исправления

Это просто Утомительно :

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);
    });
});
24 голосов
/ 06 января 2012

Недавно было выпущено несколько новых клиентов SQL-сервера node.js.Я написал один с именем node-tds , а другой называется tedious

21 голосов
/ 08 июня 2012

Мы только что выпустили драйверы предварительного просмотра для 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

10 голосов
/ 01 марта 2011

Возможно, вы могли бы использовать 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;");
8 голосов
/ 12 декабря 2013

Есть еще один модуль, который вы можете использовать - node-mssql .Он использует другие модули TDS в качестве драйверов и предлагает простой в использовании унифицированный интерфейс.Также добавлены дополнительные функции и исправления ошибок.

Дополнительные функции:

  • Унифицированный интерфейс для нескольких драйверов MSSQL
  • Пул соединений с транзакциями иПодготовленные операторы
  • Параметризованные хранимые процедуры для всех драйверов
  • Сериализация типов CLR Geography и Geometry
  • Тип данных Smart JS для сопоставления типов данных SQL
  • Поддерживает обаОбещания и стандартные обратные вызовы
7 голосов
/ 05 декабря 2012

(дублирует мой ответ на другой вопрос).

Я бы порекомендовал node-mssql , который является хорошей оберткой для других коннекторов, по умолчанию мой предыдущий выбор ( Tedious ) привнес немного более приятный интерфейс Это реализация JavaScript, без требований к компиляции, что означает, что вы можете работать как в Windows, так и вне Windows.

Другой вариант, если вы не возражаете против использования .Net или Mono с бинарным мостом, это использовать edge.js . Что может быть очень хорошо, если вы хотите использовать .Net библиотеки в node.js

node-tds отменен, node-odbc не работает с окнами, а драйвер MS node-sqlserver не работает на неокна (и имеет некоторые глупые требования).

5 голосов
/ 06 января 2012

TSQLFTW - T-SQL для выигрыша (dows) - Фоско Маротто https://github.com/gfosco/tsqlftw

Это решение для управляемого кода на C # и ADO .NET, с оболочкой C ++, с которой Node.js может импортировать и работать.


Если вы знаете .NET, вы можете попробовать WCF Data Services (ADO.NET Data Services); написать приложение 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)

4 голосов
/ 08 июня 2012

Microsoft (команда Windows Azure) только что выпустила драйвер узла для 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

2 голосов
/ 21 июня 2012

Есть обновление от Microsoft. Вот серия постов в блоге ( часть 1 и часть 2 ).

2 голосов
/ 25 января 2012

Если вы работаете в .NET, посмотрите на entityspaces.js, мы создаем универсальный ORM для Node.js, для которого не требуется служба JSON WCF ... https://github.com/EntitySpaces/entityspaces.js

Если вывы используете бэкэнд-технологию MSFT, вы можете использовать ее сейчас, однако мы создаем универсальный ORM Node.js и скоро получим больше информации об этом

...