71

Node.js アプリを Microsoft SQL と通信させる方法はありますか? 実際に出回っている MS SQL ドライバーを見たことがありませんか?

私は非常に単純なアプリをまとめており、既存の MS SQL データベースと通信できるようにする必要があります (そうでなければ、mongoDB または Redis を使用していたでしょう)

4

15 に答える 15

58

元の質問は古く、現在は @Tracker1 が回答したように Tedious をラップする @Patrik Šimek が回答した node-mssql を使用する最善の方法です。

受け入れられた回答に記載されているWindows/Azure node-sqlserver ドライバーでは、前提条件のクレイジーなリストをインストールする必要があります: Visual C++ 2010、SQL Server Native Client 11.0、python 2.7.x、およびおそらく Windows 7 SDK for 64-bitサーバ。私に言わせれば、これらすべての GB のソフトウェアを Windows Server にインストールしたくないでしょう。

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

2014 年 8 月の更新

  • 両方のモジュールは現在も積極的にメンテナンスされています。問題は非常に迅速かつ効率的に対応されます。
  • どちらのモジュールも SQL Server 2000 ~ 2014 をサポート
  • node-mssql 1.0.1 以降でサポートされているストリーミング

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

  • 最新の Tedious 1.10 に更新
  • 約束
  • 要求をオブジェクト ストリームにパイプする
  • 詳細な SQL エラー
  • トランザクションのアボート処理
  • 統合型チェック
  • CLI
  • 軽微な修正

これは単純な退屈です:

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

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

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);
    });
});
于 2014-03-26T10:43:56.260 に答える
23

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

于 2012-01-06T06:34:08.060 に答える
22

SQLServer接続用のNode.JSのプレビュードライバーをリリースしました。ここでそれらを見つけることができます:http: //blogs.msdn.com/b/sqlphp/archive/2012/06/08/introducing-the-microsoft-driver-for-node-js-for-sql-server.aspx

于 2012-06-07T23:00:50.493 に答える
9

(別の質問からの回答を複製します)。

node-mssqlをお勧めします。これは、他のコネクタの優れたラッパーです。デフォルトは、以前の選択 ( Tedious ) であり、インターフェイスが少し優れています。これは JavaScript の実装であり、コンパイルの必要はありません。つまり、Windows 環境でも非 Windows 環境でも同じように作業できます。

別のオプションとして、バイナリ ブリッジを使用して .Net または Mono を導入してもかまわない場合は、edge.jsを使用します。node.js で .Net ライブラリを活用したい場合、これは非常に便利です。

node-tdsは放棄され、node-odbcは Windows では動作せず、MS のnode-sqlserverドライバーは Windows 以外では動作しないようです (そしていくつかのばかげた要件があります)。

于 2012-12-04T22:22:37.433 に答える
9

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

SQL Server との通信を可能にする node.js の TDS プロトコルのエキサイティングな実装...

利用方法:

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;");
于 2011-03-01T15:53:08.797 に答える
5

TSQLFTW - WIN(ダウズ) のための 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 にアクセスできます。

于 2012-01-06T13:03:14.317 に答える
4

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

于 2012-06-08T15:03:14.310 に答える
2

マイクロソフトからアップデートがあります。これは一連のブログ投稿です (パート 1パート 2 )。

于 2012-06-20T22:09:02.513 に答える
2

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

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

于 2012-01-25T16:29:28.000 に答える
1

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

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

于 2015-10-08T04:27:00.683 に答える
0

2016年5月現在の状況は以下の通りです。

node-sqlserverと呼ばれる公式の Microsoft SQL Driver for Node は、何年も更新されていません。

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

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

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

于 2016-05-25T08:39:24.763 に答える
-3

そのリンクは、sql 2005 や sql 2008 ではなく、sql 2000 ソリューションのみを詳しく説明しています。また、そのコードでは、sql テキストの送信のみが許可され、ストアドプロシージャの実行は許可されていません。

実際の解決策は、ノード JS を Linux サーバーまたは Windows マシンの仮想 Linux サーバーにインストールしてから、Microsoft の Web サイトにアクセスして JDBC Java ドライバーをダウンロードし、それらの Microsoft ms sql Java jdbc ドライバーをいずれかのサーバーにインストールすることです。 Linux サーバーまたは Linux 仮想サーバー。

于 2011-08-11T23:31:46.560 に答える