2011-01-18 117 views
17

Me preguntaba si alguien conocía una forma de conectarse a una base de datos Microsoft SQL desde Node.js. Conozco los controladores MySQL, pero tengo datos que necesito extraer de una base de datos MS SQL y preferiría extraerlos directamente de Node.js en lugar de piratear un script PHP de algún tipo.Conexión a un servidor remoto de Microsoft SQL desde Node.js

+0

¿Pudo finalmente lograr esto sin construir el proxy o usar ActiveX? – lo5

+3

Estoy contento de haber encontrado esto porque me preguntaba si alguien estaría interesado en mi proyecto node.js-mssql. Es muy rudimentario en este momento, pero esta semana haré otro gran empujón con más funcionalidad :) https://github.com/orenmazor/node-tds –

+0

Una solución de javascript pura proporciona el node.js módulo [tds4node] (https://npmjs.org/package/tds4node). Enlace de GitHub: [tds] (https://github.com/ttghr/tds) – ttghr

Respuesta

9

Sospecho que tendrá que envolver su servidor SQL con un servicio web de salida JSON. En el lado positivo, debería ser relativamente fácil de hacer.

bueno si el motor de JavaScript en Node.js podría hacer esto: (de How to connect to SQL Server database from JavaScript in the browser?):

var connection = new ActiveXObject("ADODB.Connection") ; 

var connectionstring="Data Source=<server>;Initial Catalog=<catalog>;User ID=<user>;Password=<password>;Provider=SQLOLEDB"; 

connection.Open(connectionstring); 
var rs = new ActiveXObject("ADODB.Recordset"); 

rs.Open("SELECT * FROM table", connection); 
rs.MoveFirst 
while(!rs.eof) 
{ 
    document.write(rs.fields(1)); 
    rs.movenext; 
} 

rs.close; 
connection.close; 
+2

¿Debo desvirtuar esta respuesta, porque esta no es la mejor respuesta en 2014? No estoy seguro de si la revocación de una respuesta obsoleta se considera moralmente permisible. Mire aquí lo que creo que debería usarse hoy: http://stackoverflow.com/questions/5156806/node-js-and-microsoft-sql-server/22658512#22658512 –

+0

Esto ya no es una buena respuesta en 2015. [Sequelizar] (https://github.com/sequelize/sequelize) (si desea ORM) o [Tedious] (https://github.com/pekim/tedious) son opciones mucho mejores. – treythomas123

4

Si se está conectando a Mssql desde Linux, puede usar node-odbc (https://github.com/w1nk/node-odbc) con los freetds od controlador bc. Estoy usando esto en producción y es más rápido que envolver un servicio web.

2

otra opción, de Microsoft, incluso,

http://www.microsoft.com/en-us/download/details.aspx?id=29995

O un controlador de cliente Linux SQL a través de ODBC :

http://www.microsoft.com/en-us/download/details.aspx?id=28160

+1

Esta versión se acaba de actualizar hoy. –

+1

La opción MS requiere una compilación de módulo binario y parece ser solo de Windows. – Tracker1

+0

hay muchas formas de hacerlo. el controlador de Microsoft es solo uno. De hecho, no lo uso por la misma razón, solo en Windows. :(Acabo de encontrar esto hoy ... http://www.microsoft.com/en-us/download/details.aspx?id=28160 –

7

Recomendaría node-mssql, que es una envoltura agradable para otros conectores, siendo mi elección previa (Tedious) la opción más bonita de una interfaz. Esta es una implementación de JavaScript, sin requisitos de compilación, lo que significa que puede trabajar tanto en entornos Windows como en entornos que no sean Windows.

Otra opción, si no te importa traer .Net o Mono con un puente binario sería usar edge.js. Que puede ser muy bueno si se desea aprovechar las bibliotecas de .NET en Node.js

node-tds es abandonado, node-odbc no funciona con Windows, y no parece que el conductor MS node-sqlserver para trabajar en los no-ventanas (y tiene algunos requisitos ridículos).

+0

Casi estoy completamente de acuerdo. Pero es aún mejor usar [node -mssql] (https://github.com/patriksimek/node-mssql) que envuelve [Tedious] (https://github.com/pekim/tedious). La API de node-mssql es [mucho más fácil] (http://stackoverflow.com/questions/5156806/node-js-and-microsoft-sql-server/22658512#22658512). Y en cuanto a [node-sqlserver] (https://github.com/Azure/node -sqlserver) controlador por MS, vale la pena señalar que eso requiere una lista absurda de requisitos previos que no debería desear instalar en su servidor de Windows. –

+0

@ChristiaanWesterbeek gracias por la información, actualizó mi respuesta a la referencia node-mssql, así como una mención de edge.js ahora que es un poco más maduro. – Tracker1

2

Nueva respuesta para 2015: El paquete ORM Sequelize ahora es compatible con MS SQL, utilizando el controlador Tedious debajo de las cubiertas.

Esta es la mejor manera que he encontrado para interactuar con Microsoft SQL Server.

Cuestiones relacionadas