2011-09-13 14 views
1

私はレストラン管理アプリケーションを書いています。 私は、OrdersItemsという名前のテーブルを持つSQL Server 2005ベースのデータベースを持っています。 5分ごとに、この表のすべての行を読み込み、特定の条件に基づいて更新したいと考えています。データベース予約操作

私は主なアプリケーションでこれをしたくないので、これを実行するために代替エンジンを使用することをお勧めします。

このようなタスクを実行する最も良い方法はどれですか?また、メインアプリケーションは常に稼働しており、新しいレストラン注文を取得する必要があるため、このテーブル(OrdersItems)は毎回処理中です。

+0

Express Editionまたは他のエディションのいずれかを使用していますか? –

答えて

3

create a SQL Server Agent job 5分ごとに更新を行います。

SQL Server Express Editionを使用している場合、SQL ServerエージェントはSQL Serverの「より大きな」バージョンにのみ含まれているため、使用できません。
この場合、you can create your jobs manuallyバッチファイルとWindowsタスクスケジューラを使用します。

1

私は、SQLのタスク/メンテナンスプランがこれに最も適していると思います。

実行するSQL文、保守タスクなどを指定して、任意の間隔で設定できます。

アラートなどを設定して、たとえば失敗したときに通知することもできます。

0

5分ごとに起動され、トランザクションを使用してデータを処理するデータベースにアクセスできるサーバーにcronジョブをデプロイします。そこに1つの問題があります。処理するデータの量が多い場合は、5分以上もかかる可能性があります。

+3

C#\ SQL Serverソリューションでは、cronジョブがまったく共通ではありません –

2

私は、クリスチャンとdougajmcdonaldのSQLタスク/メンテナンスの使用に関する点にはっきりと同意します。しかし、あなたのタグにが含まれているので、代わりにWindowsサービスを作成することができます。このアプローチの利点

  • (急行版を含む)SQL Serverエージェントがインストールされていないマシン上で実行することができ

    は、ユーザのログインのコンテキスト外で実行することができます。

  • よく理解されている標準停止開始一時停止継続メカニズムがあります。
  • サービス自体はそう

This answerは、定期的にデータと実行を取得するWindowsサービスのテンプレートが含まれているイベントログになります失敗した場合。 DoStuffメソッドを変更して、ストアドプロシージャを実行することができます。

+0

ありがとうございます、このメソッドに興味がありますが、このメソッドがデータベースのパフォーマンスをどれだけ低下させるかを知りたいですか?前述のとおり、この表は常に処理中です。 – Shahrokh

+0

DBのパフォーマンスに関しては、どの技術を使用するかは重要ではないと思います(ダイアログタイマー、SQLエージェント、ウィンドウサービス、cronジョブ)。どちらを使用するかにかかわらず、Updateステートメントを最適化する必要があります。 –

2

dialog timerを作成して、activateストアドプロシージャにします。これは、データベース内に完全に格納されている(外部プロセスなし)、SQLエージェント(Expressで実行)を必要とせず、データベースのデタッチ/アタッチおよびバックアップ/リストア操作(スケジュールされたジョブは新しいリストアされたデータベースでリカバリ後に実行されます)。