問題タブ [sqldependency]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - SqlDependency が起動しないのはなぜですか
MS SQL Server 2005 で実行されているデータベースと ASP.NET 3.5 Web アプリケーションがあります。
データベースには、Web アプリで実行されている CMS に「ページ」をフィードするために使用している製品カタログが含まれています。ページが作成されると、アプリケーションはページをキャッシュするので、この変更をアプリケーションに通知して、ページ オブジェクトを再作成できるようにする必要があります。
CMS は独自のキャッシュを使用するため、SqlCacheDependency を使用してこのタスクを実行することはできません。
アプリを起動すると、サブスクライバーが結果に表示されます
しかし、テーブルにデータを追加するとすぐに、サブスクライバーが消え、OnChanged イベントが発生しなくなります。
私のスタートアップコードには次のものがあります
c# - 前のハンドラーが終了しなかったときにイベントが発生しますか?
SqlDependency (たとえば) は、前のイベント ハンドラーの呼び出しが完了していないときに OnChange イベントを発生させますか? (OnDependencyChange メソッドは非常に時間がかかると仮定します) 正確には何が起こるのでしょうか?
.net - SQLDependency / SqlNotificationRequestを使用して、同じアプリの複数のインスタンスに同じ通知を受信させますか?
私は最近、ASP.NETキャッシュがテーブル(またはクエリ結果)が変更されたときにキャッシュを無効にするためにSqlCacheDependencyを利用できるという非常に限られた知識でこれを調べ始めました。これにより、 SQLDependencyクラスとSqlNotificationRequestクラスが表示されます。SqlNotificationRequestクラスの詳細はまだわかりませんが、 SQLDependencyクラスについて少し学ぶことができました。Startメソッドにはより多くの権限が必要でしたが、プロセスがデータベースに接続するようにユーザーに与えることができるので、調査を行い、キューとサービスブローカーを正常に作成しました私のテストアプリは通知を受け取るために使用できました。
私の問題は、テストアプリの複数のインスタンスを実行すると機能しないことです。これを機能させるには、インスタンスごとに 1つのセットアップ(キュー、サービスブローカーなど)が必要であるように聞こえるヒントをあちこちで見ましたが、これは厄介で保守不可能に聞こえます。
誰かがこれが事実であることを確認できますか、あるいはいくつかの代替ソリューションを提案することさえできますか?
また、SQLServer2005を実行しています。
c# - レプリケーションによってデータが変更されたときに、SQL Server から .net WCF サービスを更新するための正しい方法は何ですか?
環境: レプリケート サーバー: SQL Server 2008 R2 クライアント サーバー: SQL Server Express 言語: .Net 3.5 C#
複製されたサーバーは Web サービスによって継続的に更新され、多くのテーブルが公開されます。
クライアント サーバーには、複製されたサーバーへのダウン ストリーム サブスクリプションがあります。
目標: SQL Express インスタンスがサブスクリプションの更新を取得するときに、クライアント フロント エンドに更新を渡すために、WCF サービスに通知する必要があります。
これは、SQLDependency に最適なものですか、それとも CLR トリガーを使用して WCF に接続するのに最適ですか? ポーリングを使用せずにこのタイプのフローを処理するための良い方法はありますか?
sql-server - SQL Server でクエリ通知をデバッグするにはどうすればよいですか?
クエリ通知を機能させようとしていますが、アプリケーションが通知を受け取りません。クエリ通知をデバッグするにはどうすればよいですか?
ここで利用可能なコードを使用しています http://www.codeproject.com/KB/database/chatter.aspx。キュー、サービス、およびストアド プロシージャがサーバー上に作成されていることがわかりますが、SqlDependencyオブジェクトのOnChange イベントは発生していません。
どうにかして通知を追跡できますか?
sql-server-2005 - EF4およびSQLDependencyオブジェクト
SQLDependencyオブジェクトでEF4を使用しようとしていますが、あまり運がありません。
独自のキューとサービスを作成し、WPFアプリケーションでこのキューのデータ変更を監視して、UIを更新できるようにします(データベースに常にクエリを実行するのではなく、これを試すことを選択しました)。
アプリケーションの起動時に呼び出しますが、
私のEF4リポジトリの実装は、次のような例外をスローします。
{"オプション値を指定せずにSqlDependencyを使用する場合、SqlDependencyインスタンスに追加されたコマンドを実行する前にSqlDependency.Start()を呼び出す必要があります。"}
まず、EF4では不可能なことを達成しようとしていますか、それともアプリケーションがSQL 2005からのデータ変更をリッスンできるようにするための別のアプローチがありますか?
linq-to-sql - SqlDependency とテーブルの更新で DataContext が更新されない
プロジェクトでの SqlDependency の実装に問題があります。
WCF サービスで SqlDependency を使用しています。次に、WCF サービスは、すべてのテーブルからのすべての結果をメモリ キャッシュに保持して、速度を大幅に向上させます。テーブル行の更新を行っているときを除いて、すべてが正常に機能しているようです。テーブルに行を追加または削除すると、DataContext が更新され、問題なくキャッシュが無効になります。しかし、テーブル行の更新に関しては、何も起こらず、キャッシュは無効化されず、DataContext の内容をデバッグ モードで見ると、変更がないように見えます。
私が使用しているコードは次のとおりです (System.Runtime.Caching オブジェクトを使用していることに注意してください)。
拡張メソッドを作成したので、そのようなテーブルをクエリするだけです:
DataContext は Global.asax で開かれApplication_OnStart
、キャッシュに格納されるため、WCF サービスでいつでも使用できます。同様に、現時点では、SqlDependency オブジェクトを次のように開いています。
それで、それはSqlDependencyの制限ですか、それともプロセスで何か間違っている/欠けているのですか?
c# - SqlDependencyが選択的に機能していませんか?
SQL ServerExpress2005のデータを次のように観察しようとしています。
問題は、「名前」列が変更された場合のコールバックにのみ関心があることです。ただし、OnQueryChangedは、テーブル「Persons」の別の列が次のように変更された場合にも呼び出されます。
これはSqlDependencyの意図された動作ですか、それともその使用法を間違えていますか?
c# - SqlDependency-SqlNotificationEventArgsプロパティを解釈するにはどうすればよいですか?
私はSqlDependencyクラスを使用していますが、 SqlNotificationEventArgsオブジェクト のType、Source、およびInfoプロパティの可能な組み合わせのリストを見つけようとして失敗しました。
これは私がこれまでに見つけた最も近いものです。ただし、変更/クライアント/エラーの組み合わせをすでに確認しているため、これですべてが網羅されるわけではありません。
考えられるすべてのケースを可能な限り最善の方法で処理しているかどうかを本当に知りたいです。つまり、可能な限り「サブスクリプション」を再確立したいと思います。
たとえば、変更/クライアント/エラーは、SQLServerと私のアプリ間の通信を中断するネットワークの問題に対して行われました。通信が再確立されると、私は正常に回復することができました。
編集:
多分私が持っている懸念のいくつかの例を挙げればそれは助けになるでしょう。以下の質問で「回復」と言う場合は、実行時にサブスクリプションを再確立することを意味します。つまり、手動による介入は必要ありません。
sql - SQL 依存関係イベントは、データベースの変更では発生しますが、テーブルの変更では発生しません
SQL 依存関係イベント (SQL 2008) を設定した他のユーザーのコードに取り組んでいます。私がよく知っていることではないので、読んでテストしただけです。
このイベントは CustomerServicesTable_OnChange と呼ばれるため、おそらく customerServices テーブルが変更されるたびに発生するようになっています。ただし、DB がコード (Entity Framework を使用している) によって変更された場合、イベントは発生しません。
好奇心から、SQL Server Manager を起動し、テーブルに対して直接クエリを実行して、何が起こるかを確認してみました。テーブルに対して UPDATE、INSERT、または ALTER クエリを実行しても、イベントは発生しませんでした。
SQL 依存関係が有効になっていることを確認するために、データベースに対して次のコマンドを実行しました。これは、おそらくサービスを有効にするための最初のステップです。
驚いたことに、これらのコマンドを実行するとイベントが発生しました!
そのため、依存関係がデータベース全体、または CustomerServices 以外の DB 内のテーブルに対して機能しているように見えます。問題が何であるかを正確に判断するのに役立つ方法を誰かが提案できますか?
編集:イベントが発生する原因となっているのは ALTER DATABASE コマンドではなく、SET SINGLE_USER がエラーを引き起こすという事実であることを発見しました。しかし、問題の解決にはあまり役立ちません。
乾杯、マット