2017-12-15 13 views
0

ASP.NET(C#)& SQL Server 2000を使用して開発されたビジネスアプリケーションを作成しています。SQL Serverデータベースの一部のデータを自動的にsybaseデータベースは5分ごとに起動します。ASP.NETスレッドとWindowsサービス

私の現在の知識によれば、これを達成するには2つの方法があります。

  1. 使用タイマーは、SybaseへのSQL Server &書き込みからデータを読み込み、私のASP.NETアプリケーションでスレッドを開始します。

  2. SQL Server &からSybaseに書き込むデータを読み込むWindowsサービスを開発します。

だから私の質問は以下のとおりです。

  1. 最適なオプション?
  2. 各オプションの賛否両論&は何ですか?
  3. このデータ転送を行うための他の方法はありますか?
+0

ASP.Netは、スケジュールされたタスクのために非常に悪い選択です。 SQLジョブがそれを実行できる可能性があります。質問が特定の回答には広すぎます。 – Crowcoder

+0

ASP.NETサイトで手動でスレッドを開始している場合、それらのスレッドの1つに未処理の例外があると、サイト全体がクラッシュします。 ASP.NETは、このようなことのためのひどい選択です。 – mason

+0

SybaseデータベースのSQL ServerデータベースからSQL Agent Jobを使用してデータを転送する方法はありますか? – Somi

答えて

1

私はこのためにWindowsサービスを利用します。結局のところ、ASP.NETは、この種のタスクのための良い解決策ではありません—結局のところ、それはデータを送信していません。 Task APIを考慮し、ASP.NET Webアプリケーションを非同期的にプログラムしてこれを行うのでない限り、間違いを犯すことになります。また、ネイティブサービスがすべての現代的な機能(たとえば、Task APIまたはすべての機能とサービスを備えたSQL Serverのジョブ)をサポートするかどうかは不明です。そのため、ネイティブサービスが最適な方法です。

private async Task saveData() { 
    // Copy the data 

    // Wait for 5 minutes "asynchronously" 
    Task.Delay(5 * 60 * 1000); // 5 minutes 
} 

最後には、ちょうどwhile(true)は、おそらくあなたのためにこれを行うだろう、それを反復します。しかし、ほとんどの場合、自分の足でのみ発砲します。

私は、Windowsサービス、またはタスクごとN分を実行し任意の

  • マネージド
  • タイマーベース
  • 非同期

...サービスを、使用することをお勧めします。

それ以外は、SQL Server自体があなたのために仕事をすることをお勧めします。あなたがこれをどうやってできるかを示す別の答えがあります:Execute stored procedure from a Trigger after a time delay; SQLエージェントジョブでジョブを作成します。 https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job

+0

あなたの回答にAfzaalに感謝します。回答でSQL Agent Jobsを言及しました。SQL Agent Jobを使用してSQL ServerのデータベースからSYBASEのデータベースにデータを転送することは可能ですか?どちらも2つの異なるデータベース管理システムです。同じDBMSに両方のデータベース(ソースと宛先の両方)がある場合、SQL Agent Jobの使用を検討することがあります。しかし、それは別のDBMSのために働くことができますか?説明してください。 – Somi

+0

@ソミ、あなたは正しいです、私はトリガーのためだけに言及しました。とにかく、これについて語る別のスレッドがあります。 https://dba.stackexchange.com/questions/114634/how-to-transfer-data-from-sybase-to-sql-server-database、それは逆に、SybaseデータベースをSQL Serverにインポートすることです。物を少し転倒させることができます。 :-) –

関連する問題