it-swarm.com.de

Node.js und Microsoft SQL Server

Kann ich mit meiner Node.js-App auf irgendeine Weise mit Microsoft SQL kommunizieren? Ich habe keine MS SQL-Treiber in freier Wildbahn gesehen?

Ich stelle eine sehr einfache App zusammen und muss in der Lage sein, mit einer vorhandenen MS SQL-Datenbank zu kommunizieren (ansonsten hätte ich mich für mongoDB oder Redis entschieden).

69
Khuram Malik

Wir haben gerade Vorschau-Treiber für Node.JS für die SQL Server-Konnektivität veröffentlicht. Sie finden sie hier: http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-Microsoft-driver-for-node-js-for-sql- server.aspx

21
kop48

Die ursprüngliche Frage ist alt und jetzt ist die Verwendung von node-mssql , wie von @Patrik Šimek beantwortet, die langwierig , wie von @ Tracker1 beantwortet, der beste Weg.

Für den in der akzeptierten Antwort erwähnten Windows/Azure-Knoten-SQL-Server-Treiber müssen Sie eine verrückte Liste von Voraussetzungen installieren: Visual C++ 2010, SQL Server Native Client 11.0, python = 2.7.x und wahrscheinlich auch Windows 7 SDK für 64-Bit auf Ihrem Server. Sie möchten nicht alle diese GB Software auf Ihrem Windows Server installieren, wenn Sie mich fragen.

Sie möchten wirklich langweilig verwenden. Aber auch verwenden Sie node-mssql , um es zu umbrechen und das Codieren viel einfacher zu machen.

Update August 2014

  • Beide Module werden weiterhin aktiv gewartet. Probleme werden schnell und effizient beantwortet.
  • Beide Module unterstützen SQL Server 2000 - 2014
  • Streaming unterstützt seit Node-Mssql 1.0.1

Update Februar 2015 - 2.x (stabil, npm)

  • Auf den neuesten Tedious 1.10 aktualisiert
  • Versprechen
  • Pipe-Anforderung an Objektstrom
  • Detaillierte SQL-Fehler
  • Bearbeitung des Transaktionsabbruchs
  • Integrierte Typprüfung
  • CLI
  • Kleinere Korrekturen

Das ist klar mständlich :

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

Hier kommt node-mssql was Tedious als Abhängigkeit hat. Benutze das!

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

Kürzlich wurden einige neue SQL Server-Clients für node.js veröffentlicht. Ich schrieb eine mit dem Namen node-tds und es gibt eine andere mit dem Namen mühsam

24
Chad Retz

Sie könnten vielleicht node-tds.js verwenden:

Eine aufregende Implementierung des TDS-Protokolls für node.js, um die Kommunikation mit SQL Server zu ermöglichen ...

VERWENDUNG:

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;");
10
John Boker

Es gibt ein weiteres Modul, das Sie verwenden können - node-mssql . Es verwendet andere TDS-Module als Treiber und bietet eine benutzerfreundliche einheitliche Oberfläche. Außerdem werden zusätzliche Funktionen und Fehlerbehebungen hinzugefügt.

Zusätzliche Funktionen:

  • Einheitliche Schnittstelle für mehrere MSSQL-Treiber
  • Verbindungspooling mit Transaktionen und vorbereiteten Anweisungen
  • Parametrisierte gespeicherte Prozeduren für alle Treiber
  • Serialisierung von Geografie- und Geometrie-CLR-Typen
  • Smart JS-Datentyp zu SQL-Datentyp-Mapper
  • Unterstützen Sie sowohl Versprechen als auch Standard-Rückrufe
8
Patrik Šimek

(Duplizieren meiner Antwort von einer anderen Frage).

Ich würde node-mssql empfehlen, das ist ein Nizza-Wrapper für andere Konnektoren. Die Standardeinstellung ist meine vorherige Wahl ( mständlich ), die eine etwas schönere Schnittstelle bietet. Dies ist eine JavaScript-Implementierung ohne Kompilierungsanforderungen, dh Sie können in Windows- und Nicht-Windows-Umgebungen gleichermaßen arbeiten.

Eine andere Möglichkeit, wenn es Ihnen nichts ausmacht, .Net oder Mono mit einer binären Bridge einzubringen, ist Edge.js . Das kann sehr schön sein, wenn Sie .Net-Bibliotheken in node.js nutzen möchten

node-tds wird aufgegeben, node-odbc funktioniert nicht mit Windows, und der MS node-sqlserver -Treiber scheint nicht zu funktionieren auf Nicht-Windows (und hat einige doof Anforderungen).

7
Tracker1

TSQLFTW - T-SQL für den WIN (Dows) - von Fosco Marotto https://github.com/gfosco/tsqlftw

Es handelt sich um eine C # - und ADO .NET-verwaltete Codelösung mit einem C++ - Wrapper, den Node.js importieren und verwenden kann.


Wenn Sie .NET kennen, können Sie WCF Data Services (ADO.NET Data Services) ausprobieren. Schreiben Sie eine WCF-App für den Datenzugriff und verwenden Sie odata (REST für Steroide), um mit der Datenbank zu interagieren


Wenn Sie mit SOA arbeiten und SQL Server 2005 verwenden, können Sie die Native XML-Webdienste für Microsoft SQL Server 2005 auschecken

http://msdn.Microsoft.com/en-us/library/ms345123 (v = sql.90) .aspx

Sie können als Webdienst (HTTP, SOAP) auf SQL Server zugreifen.

5
Jeno Laszlo

Microsoft (The Windows Azure Team) hat gerade einen Knotentreiber für SQL Server veröffentlicht.

Soweit ich weiß, gibt es kein Paket für npm yert, aber es ist Open Source. Und der akzeptierende Gemeinschaftsbeitrag auch.

https://github.com/WindowsAzure/node-sqlserver

Einführungsblogbeitrag hier:

http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-Microsoft-driver-for-node-js-for-sql-server.aspx

4
silverfighter

Es gibt ein Update von Microsoft. Hier ist eine Reihe von Blog-Beiträgen ( Teil 1 und Teil 2 ).

2
user1467882

Wenn Sie mit .NET arbeiten, sehen Sie sich entityspaces.js an. Wir erstellen ein vollständiges universelles ORM für Node.js, für das kein WCF-JSON-Dienst erforderlich ist. https://github.com/EntitySpaces/ entityspaces.js

Wenn Sie die MSFT-Backend-Technologie verwenden, können Sie sie jetzt verwenden. Wir erstellen jedoch ein universelles Node.js-ORM und werden demnächst weitere Informationen dazu bereitstellen

2
Mike Griffin

Die SQL Server-Treiber von Node.js scheinen sehr unausgereift zu sein - es gibt eine Mischung aus verschiedenen Projekten mit unterschiedlichen Abhängigkeiten, Leistungen und Vollständigkeitsebenen, von denen keine Vertrauen schafft.

Ich würde vorschlagen, Edge-sql zu verwenden. Dies nutzt .NETs ausgereiftes Datenbanktreiber-Ökosystem und hängt nur von .NET ab (ein Kinderspiel, wenn Sie Node unter Windows ausführen - wenn nicht, gibt es Mono , aber ich habe das nicht versucht).

Hier ist ein Knotenbeispiel (server.js) mit Edge-sql (Hinweis: Sie müssen Ihre Verbindungszeichenfolge gemäß den Edge-sql-Dokumenten in eine Umgebungsvariable einfügen):

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

Sie können Edge.js auch mit .NET nutzen, um auf andere Datenbanken wie Oracle zuzugreifen. Ich habe ein Beispiel für diesen Ansatz gegeben hier .

1
saille

Der Stand vom Mai 2016 ist wie folgt.

Der offizielle Microsoft SQL-Treiber für Node mit dem Namen node-sqlserver wurde seit einigen Jahren nicht mehr aktualisiert.

Es gibt eine neue Verzweigung mit dem Namen node-sqlserver-v8 , die mit Node Versions 0.12.x. und> = 4.1.x. -kompilierte Binärdateien für x64- und x86-Ziele.

Das Paket ist auf NPM als msnodesqlv8 verfügbar.

Ich empfehle dieses Paket, da es leichtgewichtig ist (keine Abhängigkeiten aufweist) und das einzige ist, das mit allen aktuellen Versionen von SQL Server, einschließlich SQL LocalDB, funktioniert.

0
Noel Abrahams

Jetzt (2016) können Sie Sequelize ORM verwenden, das Folgendes unterstützt:

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

Es ist weit verbreitet nach seine Github-Sterne .

0
Supersharp