Tedious: erreur de type 0 inconnue avec sqlserver 2000

Créé le 19 févr. 2016  ·  6Commentaires  ·  Source: tediousjs/tedious

Je viens de passer de la version 0.2.4 à la dernière version, étant entendu qu'il prend désormais en charge l'ancien SQL2000 qui, je pense, n'était pas pris en charge auparavant.

Je peux me connecter à 2008 sans problème, mais dès que j'essaie de me connecter à 2000, le moteur plante avec une erreur "type inconnu: 0", cette erreur n'est pas détectée par le gestionnaire d'erreurs.

voici les informations de connexion et l'erreur, le moteur et la source sont quelques variables supplémentaires que j'utilise et qui ne sont pas liées à fastidieuse :

{ 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)

Des idées sur ce que peut être la cause ?

bug

Commentaire le plus utile

OK, j'ai trouvé la cause, il semble que l'auto négociation ne fonctionne pas sur 2000 (il a sélectionné 7.4 au lieu de 7.1) et il faut donc préciser la version dans la connexion.

Une fois que j'ai fait cela, il s'est connecté sans problème, je pense que cela peut être un bug ?

Tous les 6 commentaires

OK, j'ai trouvé la cause, il semble que l'auto négociation ne fonctionne pas sur 2000 (il a sélectionné 7.4 au lieu de 7.1) et il faut donc préciser la version dans la connexion.

Une fois que j'ai fait cela, il s'est connecté sans problème, je pense que cela peut être un bug ?

Oui, cela doit être un bug dans le code de négociation/détection de version. Nous n'exécutons pas de tests unitaires / d'intégration sur SQLServer 2000 (uniquement 2008 et versions ultérieures), je devra donc le configurer sur ma machine d'une manière ou d'une autre pour tester cela.

Merci @diginfo . Cela a résolu mon problème deux ans plus tard.

Ce serait génial s'il y avait un message d'erreur plus descriptif pour déboguer cela.

C'est un très long coup!

J'utilise node-red-contrib-sqldbs pour parler à mes bases de données, et j'en ai une qui est de 2000. Quelqu'un sait-il comment je peux définir le TDS dans ce genre de cas?

Tchin Tchin!

var config = {
choix : {
tdsVersion : '7_1'
}
}

J'ai mis à jour la documentation pour clarifier l'utilisation de tdsVersion: '7_1' pour SQL Server 2000. Merci @diginfo pour le pointeur !

Cette page vous a été utile?
0 / 5 - 0 notes