識者の方がたまたまこのエントリーを目にして、親切に指導していただけますように・・・という願いを込めて・・・
いや、実は Tedious ドライバーを使って、node.js で SQLServer に接続しようと思ってます。複数インスタンスが存在しているサーバに対して、下記のような JavaScript を書いて node.js で実行してみます。
var Connection = require('tedious').Connection;var config = {server: 'DBSERVER\\MSSQL2019',authentication: {type: 'default',options: {userName: 'sa',password: 'hogepass'}},options: {encrypt: true,database: 'InazumaDB'}};var connection = new Connection(config);connection.on('connect', function(err) {if (err) {console.log(err);} else {console.log('CONNECT');}});connection.connect();
しかし、エラーに。接続できない・・・
C:\Users\shinoda>node connect_test.jsConnectionError: Failed to connect to DBSERVER\MSSQL2019:1433 - getaddrinfo ENOTFOUND DBSERVER\MSSQL2019at Connection.socketError (C:\Users\shinoda\node_modules\tedious\lib\connection.js:1404:28)at C:\Users\shinoda\node_modules\tedious\lib\connection.js:1185:14at process.processTicksAndRejections (node:internal/process/task_queues:77:11) {code: 'ESOCKET',isTransient: undefined}
ただ、コマンドプロンプトから sqlcmd で接続すると、特に問題なく接続できるので、サーバ側の問題だとか、ホスト名が引けてないんだろうとか、そういう根本的な問題ではないと思うんですよねえ。
C:\Users\shinoda>sqlcmd -S DBSERVER\MSSQL2019 -U sa -P hogepass -d InazumaDB1> SELECT * FROM M_TOMODACHI;2> GOTOMO_ID TOMO_NAME TOMO_MEMO------- --------------------- ---------------------------------------1 アンモニア治郎 おごってくれるから友達2 クロム陽子 かわいいから友達14 ばいじん太郎 事業に失敗したからそろそろ切ろう(3 行処理されました)1>
こんな感じで、sqlcmd ならバッチリです。
うーん、何がいけないんでしょうねえ。Tedious ドライバー自体はこの間最新版を入れたつもりですが・・・