1

問題があり、インターネットで答えを探しましたが、何も見つかりませんでした。

Web サービスを吸い込む小さなアプリがあります。次に、この Web サービス結果を独自の Web サービスを介して別のアプリケーションに渡し、要求をテーブルに格納します。

私がやろうとしているのは、結果をデータセットからテーブルにすばやくインポートすることです。

オプション 1 は、データ セット内のすべての行をループし、それぞれに挿入を使用することです。これに関する問題は、速度が遅く、小さなアプリの Web サービスの応答が遅くなることです。

オプション 2 は、データ セットを SQL に一括アップロードすることです。私にとって悪いニュースは、これを行う方法がわからないことです!! 誰でも助けることができますか?

4

4 に答える 4

2

SqlBulkCopyを使用できます。単純な SqlBulkCopy は次のようになります。

DataTable dtMyData = ... retrieve records from WebService
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString)) {
    bulkCopy.BulkCopyTimeout = 120; // timeout in seconds, default is 30
    bulkCopy.DestinationTableName = "MyTable"; 
    bulkCopy.WriteToServer(dtMyData);
}

大量のデータを処理している場合は、BatchSizeプロパティを設定することもできます。

于 2009-05-22T12:22:54.763 に答える
0

とても忙しい小さな Web サービスのように思えます。

代わりに (または追加で)、非同期またはマルチスレッド化を検討することもできます。それ以外の場合は、最初に回避するために分割した可能性のある 2 つの Web アプリ間の結合を組み込みました。

于 2009-05-22T12:31:41.063 に答える
0

バルク ロードの使用は、特定の DBMS に固有の方法であることから始めて、さまざまな理由で苦痛になる可能性があります。(通常、次のことは、データを含むファイルを配置する必要がある場所です。)

INSERTただし、単一のトランザクションですべての を実行するだけで、移植可能な方法でパフォーマンスを劇的に改善できることがよくあります。

BEGIN TRANSACTION
INSERT ...
INSERT ...
...
COMMIT TRANSACTION
于 2009-05-22T12:48:56.147 に答える
0

時間に余裕がある場合は、SQL Server Service Broker テクノロジの使用を検討できますが、最初は非常に急な学習曲線があります。

http://msdn.microsoft.com/en-us/library/ms166043(SQL.90).aspx

プロセスの結果を挿入するストアド プロシージャなどを起動する Web サービスを作成できます。

于 2009-05-22T12:49:34.773 に答える