Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Node.js e Microsoft SQL Server


A pergunta original é antiga e agora usar node-mssql como respondido por @Patrik Šimek que envolve Tedious como respondido por @Tracker1 é o melhor caminho a seguir.

O driver node-sqlserver do Windows/Azure, conforme mencionado na resposta aceita, exige que você instale uma lista maluca de pré-requisitos:Visual C++ 2010, SQL Server Native Client 11.0, python 2.7.xe provavelmente também Windows 7 SDK para 64 bits em seu servidor. Você não quer instalar todos esses GB de software em seu Windows Server se você me perguntar.

Você realmente quer usar Tedious. Mas também use node-mssql para envolvê-lo e tornar a codificação muito mais fácil.

Atualização de agosto de 2014
  • Ambos os módulos ainda são mantidos ativamente. Os problemas são respondidos com bastante rapidez e eficiência.
  • Ambos os módulos são compatíveis com SQL Server 2000 - 2014
  • Streaming suportado desde node-mssql 1.0.1

Atualização de fevereiro de 2015 - 2.x (estável, npm)
  • Atualizado para o mais recente Tedious 1.10
  • Promessas
  • Enviar solicitação para fluxo de objetos
  • Erros SQL detalhados
  • Manuseio de cancelamento de transação
  • Verificações de tipo integradas
  • CLI
  • Pequenas correções

Isso é simplesmente tedioso:
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);
}

Aqui vem o node-mssql que tem Tedious como dependência. Usa isto!
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);
    });
});