sql-server - stored - node js sql server tedious
Node.js y Microsoft SQL Server (14)
¿Hay alguna forma de que pueda obtener mi aplicación Node.js para comunicarse con Microsoft SQL? No he visto ningún controlador MS SQL por ahí en la naturaleza?
Estoy juntando una aplicación muy simple y necesito poder comunicarme con una base de datos MS SQL existente (de lo contrario, me habría ido con mongoDB o Redis)
(duplicando mi respuesta de otra pregunta).
Recomendaría node-mssql , que es una buena envoltura para otros conectores, siendo mi opción previa ( Tedious ) la opción predeterminada de traer un poco más 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 Lo cual puede ser muy bueno si desea aprovechar las bibliotecas .Net en node.js
node-tds.js está abandonado, node-odbc no funciona con Windows, y el controlador MS node-sqlserver no parece funcionar en node-odbc que no sean Windows (y tiene algunos requisitos ridículos).
Acabamos de lanzar los controladores de vista previa para Node.JS para la conectividad de SQL Server. Puede encontrarlos aquí: http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx
Ahora (2016) puede usar el ORM Sequelize que admite:
- MySQL / MariaDB,
- PostgreSQL
- SQLite
- Microsoft SQL Server
Es ampliamente utilizado según las estrellas de Github .
El estado en mayo de 2016 es el siguiente.
El controlador oficial Microsoft SQL para Node, llamado node-sqlserver , no se ha actualizado durante varios años.
Hay un nuevo fork en este llamado node-sqlserver-v8 que funciona con Node Versions 0.12.x. y> = 4.1.x. Esta horquilla también tiene binarios precompilados para objetivos x64 y x86.
El paquete está disponible en NPM como msnodesqlv8 .
Recomiendo este paquete porque es liviano (no tiene dependencias) y es el único que funciona con todas las versiones recientes de SQL Server, incluida SQL LocalDB.
Hay otro módulo que puede usar: node-mssql . Utiliza otros módulos TDS como controladores y ofrece una interfaz unificada fácil de usar. También agrega características adicionales y correcciones de errores.
Características adicionales:
- Interfaz unificada para múltiples controladores MSSQL
- Agrupación de conexiones con transacciones y declaraciones preparadas
- Procedimientos almacenados parametrizados para todos los conductores
- Serialización de Geografía y Geometría CLR tipos
- Tipo de datos Smart JS a mapeador de tipos de datos SQL
- Admite las promesas y las devoluciones de llamada estándar
La pregunta original es vieja y ahora usa node-mssql como lo responde @Patrik Šimek que envuelve a Tedious como lo responde @ Tracker1, es la mejor manera de hacerlo.
El controlador Windows-Azure node-sqlserver como se menciona en la respuesta aceptada requiere que instale una lista absurda de requisitos previos: Visual C ++ 2010, SQL Server Native Client 11.0, python 2.7.x y probablemente también Windows 7 SDK para 64 bits en su servidor. No desea instalar todos estos GB de software en su servidor de Windows si me lo pregunta.
Realmente quieres usar Tedious . Pero también use node-mssql para envolverlo y hacer que la codificación sea mucho más fácil.
Actualización agosto de 2014
- Ambos módulos todavía se mantienen activamente. Los problemas se responden de forma bastante rápida y eficiente.
- Ambos módulos son compatibles con SQL Server 2000 - 2014
- Streaming compatible desde node-mssql 1.0.1
Actualización de febrero de 2015 - 2.x (estable, npm)
- Actualizado a la última Tedious 1.10
- Promesas
- Solicitud de canalización a la secuencia de objeto
- Errores detallados de SQL
- Manejo de aborto de transacción
- Verificaciones de tipo integradas
- CLI
- Correcciones menores
Esto es simple Tedious :
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);
}
Aquí viene node-mssql que tiene a Tedious como una dependencia. ¡Utilizar esta!
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);
});
});
Los controladores de SQL Server de Node.js parecen muy inmaduros: hay una mezcla de diferentes proyectos con dependencias, rendimiento y niveles de integridad variables, ninguno de los cuales inspira confianza.
Propondría usar edge-sql . Esto aprovecha el ecosistema de controladores de bases de datos maduros de .NET, y solo depende de .NET (una obviedad si está ejecutando un nodo en Windows, si no está Mono , pero no lo he intentado).
Aquí hay un ejemplo de nodo (server.js) usando edge-sql (tenga en cuenta que necesita poner su cadena de conexión en una variable de entorno según documentos sq-edge):
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);
});
También puede aprovechar Edge.js con .NET para acceder a otras bases de datos, como Oracle. He dado un ejemplo de ese enfoque here .
Microsoft (The Windows Azure Team) acaba de lanzar un controlador de nodo para SQL SERVER.
No tiene paquete para npm yert, hasta donde yo sé, pero es de fuente abierta. Y la contribución de la comunidad que acepta también.
https://github.com/WindowsAzure/node-sqlserver
Introducción blog post aquí:
Si está ejecutando .NET, busque en entityspaces.js en, estamos creando un ORM universal completo para Node.js que no requerirá un servicio WCF JSON ... https://github.com/EntitySpaces/entityspaces.js
Si está utilizando la tecnología de back-end de MSFT, podría usarla ahora, sin embargo, estamos creando un ORM universal de Node.js y tendremos más información al respecto pronto.
TSQLFTW - T-SQL para The WIN (dows) - por Fosco Marotto https://github.com/gfosco/tsqlftw
Es una solución de código administrado C # y ADO .NET, con un contenedor C ++ con el que Node.js puede importar y trabajar.
Si conoce .NET, puede probar WCF Data Services (ADO.NET Data Services); escriba una aplicación WCF para acceso a datos y use odata (REST con esteroides) para interactuar con la base de datos
- Servicios de datos WCF: http://msdn.microsoft.com/en-us/data/bb931106
- OData: http://www.odata.org/
Si está en SOA y utiliza SQL Server 2005, puede consultar los Servicios web nativos XML para Microsoft SQL Server 2005
http://msdn.microsoft.com/en-us/library/ms345123(v=sql.90).aspx
Puede acceder a SQL Server como un servicio web (HTTP, SOAP)
Tal vez node-tds.js usar node-tds.js :
Una implementación emocionante del protocolo TDS para node.js para permitir la comunicación con el servidor sql ...
USO:
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;");
ese enlace detalla solo una solución sql 2000, no sql 2005 ni sql 2008, y también ese código solo permite el envío de texto sql, y no permite la ejecución de procedimientos almacenados.
La solución real sería instalar el nodo JS en un servidor Linux o en un servidor Linux virtual en una máquina Windows, y luego ir al sitio web de Microsoft y descargar los controladores java JDBC e instalar los controladores java jdbc de Microsoft MS SQL en el servidor Linux o servidor virtual Linux.