Узел.js и Microsoft SQL Server


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

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

14 69

14 ответов:

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

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

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

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

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

  • оба модуля все еще активно поддерживаются. Вопросы решаются достаточно быстро и эффективно.
  • оба модуля поддерживают SQL Server 2000 -
  • потоковая передача поддерживается с node-mssql 1.0.1

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

  • обновлено до последней утомительной 1.10
  • обещания
  • Pipe request to object stream
  • подробные ошибки 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 который имеет утомительный как зависимость. Используй это!

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);
    });
});

пара новых узлов.клиенты JS SQL server только что выпустили недавно. Я написал один под названием node-tds и есть еще один под названием нудно

вы могли бы использовать node-tds.js:

захватывающая реализация протокола TDS для узла.js, чтобы разрешить связь с sql server...

использование:

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;");

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

дополнительные характеристики:

  • унифицированный интерфейс для нескольких драйверов MSSQL
  • объединение соединений с транзакциями и подготовленными отчетами
  • параметризованные хранимые процедуры для всех драйверов
  • сериализация География и геометрия типы CLR
  • Smart JS data type to SQL data type mapper
  • поддержка как обещаний, так и стандартных обратных вызовов

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

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

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

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

TSQLFTW-T-SQL For the WIN ( dows) - by Fosco Marotto https://github.com/gfosco/tsqlftw

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


Если вы знаете .NET, вы можете попробовать службы данных WCF (ADO.NET Data Services); написать приложение WCF для доступа к данным и использовать odata (REST on steroids) для взаимодействия с базой данных


Если вы находитесь в 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)

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

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

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

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

узел.драйверы JS SQL Server кажутся очень незрелыми - есть мешанина различных проектов с различными зависимостями, производительностью и уровнями полноты, ни один из которых не внушает доверия.

Я бы предложил использовать edge-sql. Это использует зрелую экосистему драйверов базы данных .NET и зависит только от .NET (без проблем, если вы используете узел в Windows - если нет моно, но я этого не пробовал).

вот узел пример (сервер.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);
});

вы также можете использовать края.js С .NET для доступа к другим базам данных, таким как Oracle. Я привел пример такого подхода здесь.

статус по состоянию на май 2016 года выглядит следующим образом.

официальный драйвер Microsoft SQL для узла, называемый узел-sqlserver, не обновлялся в течение ряда лет.

есть новая вилка на этом называется node-sqlserver-v8 это работает с версиями узлов 0.12.х. и >= 4.1.x. эта вилка также имеет предварительно скомпилированные двоичные файлы для целей x64 и x86.

пакет доступен на НПМ как msnodesqlv8.

Я рекомендую этот пакет, потому что он легкий (не имеет зависимостей), и это единственный, который работает со всеми последними версиями SQL Server, включая SQL LocalDB.

теперь (2016) вы можете использовать Sequelize ORM, который поддерживает:

  • MySQL / MariaDB,
  • PostgreSQL
  • SQLite
  • Microsoft SQL Server

Он широко используется в соответствии с его звезды Github.

эта ссылка детализирует только решение sql 2000, а не sql 2005 или sql 2008, а также этот код позволяет отправлять только текст sql и не позволяет выполнять хранимые процедуры.

реальным решением было бы установить узел JS на сервере linux или на виртуальном сервере linux на машине windows, а затем перейти на веб-сайт microsoft и загрузить драйверы JDBC java и установить эти драйверы microsoft ms sql java jdbc на сервере linux или Linux virtual сервер.