web-dev-qa-db-ja.com

Node.jsおよびMicrosoft SQL Server

Node.jsアプリをMicrosoft SQLと通信させる方法はありますか?私は、MS SQLドライバーを見たことがありませんか?

私は非常にシンプルなアプリを組み合わせており、既存のMS SQLデータベースと通信できる必要があります(そうでなければ、mongoDBまたはRedisを使用していました)

69
Khuram Malik

SQL Server接続用のNode.JSのプレビュードライバーをリリースしました。ここにあります: http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-Microsoft-driver-for-node-js-for-sql- server.aspx

21
kop48

元の質問は古く、@ PatrikŠimekが答えた node-mssql を使用して、 Tedious を@ Tracker1が答えたのが最善の方法です。

Windows/Azure node-sqlserver driver 受け入れられた答えに記載されているように、次の必要条件のクレイジーリストをインストールする必要があります:Visual C++ 2010、SQL Server Native Client 11.0、python = 2.7.xおよびおそらくサーバー上の64ビット用のWindows 7 SDK。私に尋ねた場合、これらのGBのソフトウェアをすべてWindowsサーバーにインストールしたくないでしょう。

あなたは本当に Tedious を使いたいです。ただし、alsonode-mssql を使用してラップし、コーディングを簡単にします。

2014年8月更新

  • 両方のモジュールは引き続きアクティブに維持されます。問題は非常に迅速かつ効率的に対応されます。
  • 両方のモジュールがSQL Server 2000-2014をサポートします
  • Node-mssql 1.0.1以降でサポートされるストリーミング

2015年2月更新-2.x(安定、npm)

  • 最新のTedious 1.10に更新されました
  • 約束
  • オブジェクトストリームへのパイプリクエスト
  • 詳細なSQLエラー
  • トランザクション中止処理
  • 統合型チェック
  • CLI
  • 軽微な修正

これは単純です 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);
}

ここに node-mssql があり、これは依存関係としてTediousを持っています。これを使って!

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);
    });
});
50

いくつかの新しいnode.js SQLサーバークライアントが最近リリースされました。 node-tds と呼ばれるものを書きました- tedious と呼ばれる別のものがあります

24
Chad Retz

おそらく node-tds.js を使用できます。

Node.jsのTDSプロトコルのエキサイティングな実装により、SQLサーバーとの通信が可能になります...

使用法:

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;");
10
John Boker

使用できる別のモジュールがあります- node-mssql 。他のTDSモジュールをドライバーとして使用し、使いやすい統合インターフェースを提供します。また、追加の機能とバグ修正も追加します。

追加機能:

  • 複数のMSSQLドライバー用の統合インターフェース
  • トランザクションおよび準備済みステートメントを使用した接続プーリング
  • すべてのドライバーのパラメーター化されたストアドプロシージャ
  • GeographyおよびGeometry CLRタイプのシリアル化
  • スマートJSデータ型からSQLデータ型マッパー
  • Promiseと標準のコールバックの両方をサポート
8
Patrik Šimek

(私の答えを別の質問から複製する)。

node-mssql をお勧めします。これは他のコネクタのニースラッパーであり、デフォルトは以前の選択肢( Tedious )で、インターフェイスが少し良くなりました。これはJavaScriptの実装であり、コンパイル要件はありません。つまり、ウィンドウ環境と非ウィンドウ環境の両方で作業できます。

もう1つのオプションとして、.NetまたはMonoをバイナリブリッジで取り込むことを気にしない場合は、 Edge.js を使用します。 node.jsで.Netライブラリを活用したい場合、これは非常に良いことです。

node-tds は放棄され、 node-odbc はWindowsでは動作せず、MS node-sqlserver ドライバーは動作しないようです非ウィンドウ(およびいくつかの間抜けな要件があります)。

7
Tracker1

TSQLFTW-WIN(dows)のT-SQL-Fosco Marottoによる https://github.com/gfosco/tsqlftw

これは、C#およびADO .NETマネージコードソリューションであり、Node.jsがインポートおよび操作できるC++ラッパーを備えています。


.NETを知っている場合は、WCF Data Services(ADO.NET Data Services)を試すことができます。データアクセス用のWCFアプリを作成し、odata(ステロイドのREST)を使用してデータベースと対話する


SOAでSQL Server 2005を使用している場合、Microsoft SQL Server 2005のネイティブXML Webサービスを確認できます。

http://msdn.Microsoft.com/en-us/library/ms345123(v = sql.90).aspx

Webサービス(HTTP、SOAP)としてSQL Serverにアクセスできます

5
Jeno Laszlo

Microsoft(Windows Azureチーム)は、SQL SERVERのノードドライバーをリリースしました。

私の知る限り、npm yert用のパッケージはありませんが、オープンソースです。また、受け入れられているコミュニティの貢献。

https://github.com/WindowsAzure/node-sqlserver

紹介ブログの投稿はこちら:

http://blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-Microsoft-driver-for-node-js-for-sql-server.aspx

4
silverfighter

Microsoftからの更新があります。これが一連のブログ投稿です( part 1 および part 2 )。

2
user1467882

.NETで実行している場合は、entityspaces.jsを見て、WCF JSONサービスを必要としないNode.js用のユニバーサルORM全体を作成しています... https://github.com/EntitySpaces/ entityspaces.js

MSFTバックエンドテクノロジーを使用している場合は、今すぐ使用できますが、ユニバーサルNode.js ORMを作成しており、その詳細については近日中にお知らせします。

2
Mike Griffin

Node.js SQL Serverドライバーは非常に未熟なようです。依存関係、パフォーマンス、完全性のレベルが異なるさまざまなプロジェクトがあり、どれも自信を刺激しません。

Edge-sql を使用することを提案します。これは、.NETの成熟したデータベースドライバーエコシステムを活用し、.NETのみに依存します(Windowsでノードを実行している場合は簡単です-ない場合は Mono ですが、試したことはありません)。

Edge-sqlを使用したノードの例(server.js)です(Edge-sqlのドキュメントに従って、接続文字列を環境変数に入れる必要があることに注意してください)。

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);
});

.NETで Edge.js を活用して、Oracleなどの他のデータベースにアクセスすることもできます。そのアプローチの例を示しました here

1
saille

2016年5月現在の状況は次のとおりです。

node-sqlserver と呼ばれるNode用の公式Microsoft SQL Driverは、長年にわたって更新されていません。

これには node-sqlserver-v8 という新しいフォークがあり、Node Versions 0.12.x.および> = 4.1.xで動作します。このフォークにはpre -x64およびx86ターゲット用のコンパイル済みバイナリ。

パッケージは、NPMで msnodesqlv8 として入手できます。

このパッケージは軽量で(依存関係がない)、SQL LocalDBを含むSQL Serverのすべての最新バージョンで動作する唯一のパッケージであるため、お勧めします。

0
Noel Abrahams

現在(2016)では、次をサポートする Sequelize ORMを使用できます。

  • MySQL/MariaDB、
  • PostgreSQL
  • SQLite
  • Microsoft SQL Server

Githubの星 に従って広く使用されています。

0
Supersharp