2

私はこれについていくつか/多くのことを読みましたが、あまり役に立たないようです.

私はアプリ(「TieUp」と呼ばれていますが、それは無関係です)を持っています。毎日手動で実行して、いくつかの場所からのデータを照合しています。

ソースとして使用しています:

A) リモート SOAP ソースからのデータであり、XMLtransform セットアップを介してインメモリ TClientDataset にロードされます。

B) CSV ファイルは毎日ダウンロードされ、インメモリ TClientDataset にロードされます

C) プログラムと同じコンピューター上の Mysql データベース (ライブ ソースの復元されたバックアップです)

D) リモート MS-SQL (SQLServer 2008) データベース

E) リモートサーバー上の Mysql データベース

データは、ソース A、B、C、および D からのみ読み取られます。データ ソース E は、統合されたデータで更新されます。

毎日 800 から 2000 のレコードがあるため、データセットは膨大ではありませんが、ターゲット (E) は約 150,000 に成長し、毎日増加しています。

私は通常、これをすべて問題なく実行できます。MS-SQL システムへの個々のリモート ルックアップが原因で少し遅くても、すべてが期待どおりに機能します)。

確認できる特定のフェーズまたは操作中に障害は発生しません。手順は次のとおりです。

1) 最初に SOAP(A) データを取得します。

2) CSV/インメモリデータ(B)と紐付ける。

3) ソース C および D の参照データを参照して照合する

4) 統合されたデータをソース E に書き込みます

インメモリ データセットにデータを読み込んだ後、すべてが TSQLQueries にリンクされた DatasetProviders を介して TClientDatasets にアクセスします (現在、それらはすべて同じサーバー上にありますが、3 層になる可能性がある将来の柔軟性を維持するためにそのようにしました)。すべてのクエリは、実際には非常にシンプルであるため、SQLQuery コンポーネントに含まれています。

Delphi 2009 Enterprise の完全に標準的なコンポーネントを使用しています。すべての更新プログラムとデータベース更新パックが適用されました。各データ ソースには独自の DataModule があり、これらは起動時に自動作成されます

ここでは明らかに非常に多くのデータアクセスが行われていますが、クラッシュすると(壊滅的な障害で)スタックし、完全にスタックします。Windows は通常の「TieUp が動作を停止しました」からタスクを終了できません。プロセスに移動して強制終了する必要があります。

あまりにも多くのことが起こっていますが、これは週に 1 回程度しか発生しないため、どこから調べればよいのか本当にわかりません。

質問をする理由は 2 つあります。1) 手作業をなくして完全に自動化しようとしているからです。2) E への更新フェーズで発生した場合 - その日の新しいレコードを手動で削除し、最初からやり直す必要があります。その点を確実に確立するために、手動で DB にクエリを実行する必要があります。

私の次のステップは、Delphi を別のコンピューターにインストールし、最初にフリーズしない場合は、キャッチできるまで常にデバッガーの下で実行することです。しかし、それはさらに別の異なるネットワーク接続を導入します (ローカルホストの代わりに)。

だから:「明確な答えはありますか?」または、最も問題のあるコンポーネント/接続は何ですか? 探し始めるのに好まれる場所はどこですか?

前もって感謝します...

4

0 に答える 0