-3

正確に 24 時間後に SQL データベースの特定の行のレコードを (「true」から「false」に) 変更するにはどうすればよいですか?

4

3 に答える 3

2

これは、開発しているアプリケーションのタイプによって異なり、このアプリケーションが常に実行されていることを前提としています。たとえば、これがWebアプリケーション(ASP.NET)の場合、アプリケーションが将来の指定された時間にまだ実行されているか、IISによって停止される可能性があるかどうかを信頼できないため、これは間違いなく非常に悪い考えです。

デスクトップアプリケーションstart a timerでは、コールバックでdb更新を実行できます。別の可能性は、次のRegisterWaitForSingleObject方法を使用することです。

ThreadPool.RegisterWaitForSingleObject(
    new AutoResetEvent(false),
    (state, timedOut) =>
    {
        // this callback will execute 24 hours later
        // here you could perform your database update
    },
    null,
    TimeSpan.FromHours(24),
    true
);
于 2013-03-17T09:42:44.307 に答える
1

ニーズに応じて、さまざまなオプションがあります。ここにあなたが選択するのに役立ついくつかがあります:

  1. SQL Server エージェント (Express Edition には含まれていません)
  2. タスク スケジューラとバッチ ファイルを使用します。
  3. Quartz .NET ( http://quartznet.sourceforge.net/ )
  4. パワーシェル

#2 については、ここで情報を見つけることができます

ここで SQL バッチ ファイルを生成する興味深いツール: http://www.codeproject.com/Articles/12203/Generating-osql-Batch-Scripts

アプリ内から行う必要がある場合は、#3またはDarinの提案に従ってください。

于 2013-03-17T09:49:44.120 に答える
0

あなたはこれをすべきではありません。ブール値の期限を設定してから、アプリで有効期限を確認することをお勧めします。

于 2013-03-17T10:50:14.570 に答える