sql >> データベース >  >> RDS >> Sqlserver

SqlDependencyの信頼性?

    1)はい、目的が正しく設計されているため、信頼できると思います(キャッシュの無効化)

    2)いいえ。これが、クエリを発行することによってのみサブスクライブできる理由です。これにより、データのフェッチと通知する新しい更新の間に競合が発生しなくなります。

    3)データベース(またはインスタンス)の再起動は、保留中のすべてのクエリ通知に SqlNotificationInfo Restartの値 。 SqlDependencyがクエリ通知に基づいている方法を読む より良い理解のために。 SqlDependencyとして データベースへの接続を常に開いたままにしておくと、データベースが利用できないことがSqlDependencyによって検出されます。 明示的なクエリ通知の前でも

    4)いいえ。これについてはさらに詳しく説明します...

    5)「欠落したデータ」はありません。クエリ通知(したがってSqlDependency)は、について通知することはありません。 データが変更されました。 変更されたことを通知するだけです 。あなたはいつも戻ってすべてを読むことになっています 何が変わったかを確認するためにデータを戻します(質問/回答2に戻ります)。新しく起動したアプリケーションは、そもそもデータをまだ照会していないため、通知される変更はありません。 のみ 最初にデータを照会して、通知を受け取ることができます。

    問題の説明から、クエリ通知が必要であるとは確信していません。 アプリケーションが実行されていなくても、いつ発生したかに関係なく、変更に対応したいと考えているようです。 。これは確かにキャッシュの無効化ではなく、変更の追跡です。したがって、データキャプチャの変更 または変更の追跡 、どちらもSQL Server 2008以降のみです(SQL Server 2005では使用できません)。 SQL Server 2005では、トリガーを展開してサービスブローカー 処理しようとしているのと同じ問題を処理します(変更を検出し、新しいデータの各行に対応します)。



    1. 2行の差または比率を順番に取得する集計関数

    2. SQLの最初の2つの特殊文字の間の文字を取得します

    3. 再帰クエリチャレンジ-単純な親/子の例

    4. 2つのテーブル間のサブクエリに基づくOracleSQLの更新