1

私のアプリケーションには次の手順があります。

製品のデータベース (20,000 行) が存在します。

私たちのクライアントには、Excel ファイルをインポートする「インポート」機能があります。

これは、すべての製品テーブルの行を削除してからインポートを実行することによって実装されます。これは、データに対してプログラムで計算を実行するため、長い作業です。

明らかな問題は、「インポート」アクションが失敗した場合 (IO スタッフ)、products テーブルに none/partial/curropt データがあることです。

「インポート」操作が失敗した場合、元のデータが残ることを願っています。

これは、SQL Server 2005 を使用し、VS2005 設計ツールで作成した XSD を使用して、C# で記述された ASP.NET アプリケーションです。

4

4 に答える 4

4
  1. 取引開始
  2. テーブルからデータを削除する
  3. 新しいデータを挿入する
  4. 問題がなければ、変更をコミットします
于 2009-01-08T09:47:14.513 に答える
1

ここでは、トランザクションを使用するのが当然の選択です。

私が最初に尋ねるのは、テーブル全体を本当にクリアする必要があるかということだと思います。更新する必要があるデータの量を制限するために使用できるタイムスタンプまたは何かはありますか? すべての削除と挿入の代わりに更新を使用するようにロジックを作り直していただけますか? そうすれば、トランザクションは小さくなります。

-ダン

于 2009-01-08T09:59:06.190 に答える
1

製品テーブルと同じ構造のテーブルにデータをインポートし、インポートが成功したことを確認したら、製品テーブルのデータを置き換えます。

これは、製品テーブルを更新している間、ユーザーがインポートの進行中にシステムを使用し続けることができること、およびダウンタイムを最小限に抑えることを意味します。

于 2009-01-08T09:45:25.250 に答える
1

上記で概説したトランザクションアプローチを使用します。しかし、私が見ることができる唯一の問題は、インポート プロセスが行われている間、テーブル全体をロックしてしまう可能性があることです。考える必要があるかもしれません。別のテーブルのアプローチは、解決策の 1 つになる可能性があります。

于 2009-01-08T10:11:43.463 に答える