Acabo de actualizar de la versión 0.2.4 a la última en el entendimiento de que ahora es compatible con el SQL2000 anterior, que no creo que fuera compatible anteriormente.
Puedo conectarme a 2008 sin problema, pero tan pronto como intento conectarme a 2000, el motor se bloquea con un error de 'tipo desconocido: 0', este error no es detectado por el controlador de errores.
aquí está la información de conexión y el error, el motor y la fuente son un par de vars adicionales que uso y no están relacionadas con tedious:
{ server: '192.168.42.4',
userName: 'XXX',
password: 'xxx',
engine: 'MSSQL',
source: 'sqlite',
options:
{ database: 'xxx',
textsize: '2147483647',
connectTimeout: 15000,
requestTimeout: 15000,
cancelTimeout: 5000,
packetSize: 4096,
tdsVersion: '7_4',
isolationLevel: 2,
encrypt: false,
cryptoCredentialsDetails: {},
useUTC: true,
useColumnNames: false,
connectionIsolationLevel: 2,
readOnlyIntent: false,
enableAnsiNullDefault: true,
port: 1433 }
}
Error: Unknown type: 0
at Parser.parseTokens (/usr/share/nodejs/dev/run/pure/node_modules/tedious/lib/token/stream-parser.js:94:30)
at Parser._transform (/usr/share/nodejs/dev/run/pure/node_modules/tedious/lib/token/stream-parser.js:67:14)
at Parser.Transform._read (/usr/share/nodejs/dev/run/pure/node_modules/readable-stream/lib/_stream_transform.js:172:10)
at Parser.Transform._write (/usr/share/nodejs/dev/run/pure/node_modules/readable-stream/lib/_stream_transform.js:160:12)
at doWrite (/usr/share/nodejs/dev/run/pure/node_modules/readable-stream/lib/_stream_writable.js:335:12)
at writeOrBuffer (/usr/share/nodejs/dev/run/pure/node_modules/readable-stream/lib/_stream_writable.js:321:5)
at Parser.Writable.write (/usr/share/nodejs/dev/run/pure/node_modules/readable-stream/lib/_stream_writable.js:248:11)
at Parser.addBuffer (/usr/share/nodejs/dev/run/pure/node_modules/tedious/lib/token/token-stream-parser.js:59:26)
at Connection.sendDataToTokenStreamParser (/usr/share/nodejs/dev/run/pure/node_modules/tedious/lib/connection.js:684:37)
at Connection.data (/usr/share/nodejs/dev/run/pure/node_modules/tedious/lib/connection.js:1108:21)
at Connection.dispatchEvent (/usr/share/nodejs/dev/run/pure/node_modules/tedious/lib/connection.js:559:45)
at MessageIO.<anonymous> (/usr/share/nodejs/dev/run/pure/node_modules/tedious/lib/connection.js:476:16)
at emitOne (events.js:90:13)
at MessageIO.emit (events.js:182:7)
at ReadablePacketStream.<anonymous> (/usr/share/nodejs/dev/run/pure/node_modules/tedious/lib/message-io.js:101:13)
at emitOne (events.js:90:13)
¿Alguna idea sobre cuál puede ser la causa?
OK, he encontrado la causa, parece que la negociación automática no funciona en 2000 (seleccionó 7.4 en lugar de 7.1) y, por lo tanto, es necesario especificar la versión en la conexión.
Una vez que hice esto, se conectó sin problemas, creo que esto puede ser un error.
Sí, esto debe ser un error en el código de negociación / detección de versión. No ejecutamos pruebas unitarias / de integración contra SQLServer 2000 (solo 2008 y posteriores), así que tendré que configurarlo en mi máquina de alguna manera para probar esto.
Gracias @diginfo . Esto resolvió mi problema dos años después.
Sería genial si hubiera un mensaje de error más descriptivo para depurar esto.
¡Esta es una posibilidad muy remota!
Estoy usando node-red-contrib-sqldbs para hablar con mis DB, y tengo uno que es 2000. ¿Alguien sabe cómo puedo configurar el TDS en este tipo de instancia?
¡salud!
var config = {
opciones: {
tdsVersion: '7_1'
}
}
Actualicé los documentos para aclarar el uso de tdsVersion: '7_1'
para SQL Server 2000. ¡Gracias @diginfo por el puntero!
Comentario más útil
OK, he encontrado la causa, parece que la negociación automática no funciona en 2000 (seleccionó 7.4 en lugar de 7.1) y, por lo tanto, es necesario especificar la versión en la conexión.
Una vez que hice esto, se conectó sin problemas, creo que esto puede ser un error.