問題タブ [sqlcachedependency]
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-2005 - Sql Server が SqlCacheDependency を使用して単純な選択クエリのサブスクリプションを作成しない
asp.net アプリケーションでオブジェクトをキャッシュするために、単純な SQLCacheDependency を実装しようとしていました。
かなり長い間頭を壊した後、行き止まりにぶつかったようで、外の景色が助けになると思いました.
ただし、このアイテムは追加されるとすぐにキャッシュから削除されます。他の考えられる原因の修正に多くの時間を費やした後(データベースのANSI NULLS ONなどの設定)、壁にぶつかりました。SQL Server プロファイラーから、サブスクリプションが次のテキスト データで起動されていることがわかります
type = subscribe および info = invalid であることがわかります。これは私を驚かせるものです。http://www.simple-talk.com/sql/t-sql-programming/using-and-monitoring-sql-2005-query-notification/およびhttp://msdn.microsoft.com/en-usによると/library/ms189308.aspx「送信されたコマンドに、通知をサポートしないステートメント (INSERT や UPDATE など) が含まれていた」場合に発生します。これは、明らかに、SqlDependency の作成に指定された条件に準拠する単純な選択ステートメントです。
それで、私はここで何が欠けていますか?これは最も単純なシナリオですが、うまくいきません!
asp.net - C# でのキャッシュは、私にとって正しいアプローチですか?
ASP.NET でのキャッシュについて調べてみましたが、まだいくつか質問があります。
Sql Cache Dependency を使用する場合...監視するテーブルを指定できることは知っていますが、それらのテーブルのいずれかに変更が発生した場合、キャッシュ全体がリセットされますか? 頻繁に変更されるテーブルをキャッシュしたくないことは理解していますが、キャッシュされたテーブルが一握りになる可能性があり、各テーブルが 1 日に数回しか更新されない場合でも、キャッシュが 50 回リセットされる可能性があります。毎日 (8 時間枠)。
GAC DLL を介してこのキャッシュを作成および維持します。多数の異なるアプリケーションが、一度にその GAC にアクセスします。各アプリケーションは独自のキャッシュのコピーを保持していますか? それとも、1 つのグローバルな場所 (またはアプリケーション プールごと) に格納されているだけですか?
キャッシュが現在消費している容量を確認できるサーバー上の物理的な場所はありますか? これは、各アプリケーションが独自のキャッシュを保持している場合、最終的に大量のディスク容量を消費する可能性があるため、非常に重要です。
物理的にキャッシュを強制的に再構築する方法はありますか? 上司が、特定の問題でキャッシュに問題があると想定しているのを見ることができたので、根本的なレベルでそれを除外できる必要がある. 「レコードを変更して、キャッシュを再構築する必要があると言う」のではなく、「[アクション X] を実行し、キャッシュにあったものがすべてなくなったことを知る」
あなたの答えと時間を前もってありがとう。
c# - キャッシュキーに SqlCommand を使用すると SqlCacheDependency が機能しない
このコードは正常に機能し、データベースで変更されるたびにデータを無効にします。
「製品」テーブル全体を直接無効にすることはできませんが、テーブルの選択を無効にできる必要があります。私が抱えている問題は、データが変更されたときに次のコードがキャッシュを無効にしないことです。
これを分析するために必要なすべての情報を含めようとしましたが、さらに含める必要がある場合はお知らせください。
c# - 現在のプロジェクトで SqlDependency.Start(connectionstring) が呼び出されたかどうかを判断しますか?
私たちのアプリケーションは、多くの共有コンポーネントを使用しています。たとえば、未メールの電子メールを処理する Windows サービスなど、キャッシュが不要なものもあります。その結果セットをキャッシュすることはありません...
問題は、共有データ層が SqlCacheDependency を使用するように変更されているため、データ層が SqlCacheDependency オブジェクトを要求するデータベース呼び出しで SqlDependency を開始しないサービスが失敗することです。
これは疑問につながります - ブローカ サービスがリッスンしているかどうか (つまり、SqlDependency.Start(connectionString) が呼び出されているかどうか) を確認するためにデータ クラスをテストする方法はありますか?
SqlDependency オブジェクト自体には、Enabled または同様のプロパティはありません。データ層が状態を判断するために SqlCaching が使用されていることを、呼び出し元のアプリに強制的にデータ層に伝える以外に方法はありますか?
c# - 複数の結果セットを持つ SQL Server クエリのキャッシュ
SQLCacheDependency クラスを使用して、複数の結果セットを持つ SQL ストアド プロシージャをキャッシュしようとしています。ストアド プロシージャの最初の 3 つのクエリは、Web サイトのすべてのユーザーに一般的なクエリであり、4 つ目はユーザー名でフィルター処理されたデータを取得します。
ストアド プロシージャの 4 番目のクエリはユーザー名でフィルター処理されているため、別のユーザーが実行するたびに SQLCacheDependency クラスがキャッシュからすべての結果セットを削除することを意味するのでしょうか、それともデータベースにヒットして、ストアド プロシージャの 4 番目のクエリの結果を取得し、キャッシュから最初の 3 つのクエリの結果を取得しますか?
前もって感謝します
asp.net - ASP.NET出力キャッシングとASP.NETオブジェクトキャッシング
次のシナリオのどれが最も効果的かを判断するのを手伝ってくれませんか。
3つのユーザーコントロールがあります。各コントロールは、SQL Serverクエリの結果に基づいてコンテンツを生成する必要があります。たとえば、ユーザーコントロール#1は、グリッドビューにクエリの出力を入力します。
SQL Serverデータベースへのラウンドトリップを減らすために、キャッシュを利用したいと思います。私は次の2つの解決策を思いつきましたが、どちらが最も効果的か知りたいです。
シナリオ#1:
3つのユーザーコントロールのクエリすべてを単一のSQLServerストアドプロシージャ(バッチ処理)に配置し、含まれているページ内のユーザーコントロールの外部でストアドプロシージャを実行してから、各ユーザーコントロールにクエリ出力を提供します。3つのクエリすべてを単一のストアドプロシージャに配置することで、データベースへのラウンドトリップが削減されます。
このシナリオでのキャッシュは、ストアドプロシージャの出力をキャッシュすることによって行われます。したがって、ストアドプロシージャの出力は、各ユーザーコントロールにその出力を提供するために毎回メモリから取得され、その後、各ユーザーコントロールがその出力を生成します。クエリの約188の異なるバージョンが、ASP.NETオブジェクトキャッシングによってキャッシュされます。
シナリオ#2:
各ユーザーコントロール内でSQLServerデータベースを個別にクエリし、それぞれが取得したクエリ結果を使用して各ユーザーコントロールの出力を生成します。これは、各ユーザーコントロールが個別にSQLServerデータベースを呼び出すことを意味します。このシナリオでのキャッシュは、各ユーザーコントロールの出力をキャッシュすることによって行われます。したがって、ユーザーコントロールは毎回出力を生成する必要がなく、メモリから直接出力を取得できます。このシナリオの落とし穴は、1つ以上のユーザーコントロールの約188の異なるバージョンをキャッシュする必要があることです。
前もって感謝します
asp.net-mvc-3 - sqlCacheDependencyを使用してデータベースの変更によってaspページを自動更新することができますか
これに関するいくつかの実用的なサンプルをグーグルで検索するのに丸2週間費やしました。コンクリートの壁に頭をぶつけそうになりました…今までずっと苦しんでいました。
OK、MS SQL Server の MsgLog という名前のテーブルから、Msg と MsgID などの 2 つの列を表示する単純な Web ページがあります。新しいメッセージ エントリをテーブルに挿入するストアド プロシージャがあります。(将来、既存のエントリを更新する可能性があります)
私の望みは、新しいメッセージ エントリが挿入されたとき、または既存のメッセージ エントリが更新されたときはいつでも、ユーザーがページ ボタンをクリックしたり、コード化されたタイマー機能を使用したりせずに、Web ページがこの変更を自動的に反映する必要があることです。です。ページの更新は、データベース テーブルの変更によってのみトリガーできます。
これを達成するために SqlCacheDependency を使用することに関する多くのインターネット投稿を読みましたが、完全な手順とコードを提供するものはありません。私は自分のプロジェクトで彼らのサンプル コードを微調整しようとしましたが、予想どおり、どれもうまくいきませんでした。それともこれを実装することは不可能ですか?
私の開発環境は次のとおりです。ASP.NET FRAMEWORK 4.0を使用するVisual Studio 2010プロフェッショナル、SqlCommandオブジェクトを含むSQLステートメントが埋め込まれたC#を使用するMVC 3アプリケーション、データベースはMS SQL Server 2008エンタープライズエディション、IISエクスプレスです。
SQLサーバーの設定からコーディングまで、実行可能な詳細な手順を完全に示してくれる天才がいますか。機能は、Web ページの 1 つのテーブルから 2 つの列を含む行を表示するのと同じくらい簡単で、テーブルが更新または挿入された場合にのみ変更をリアルタイムで反映します。ポーリングまたはタイマー技術を使用しない; LINQ to SQL ではなく、SqlCommand を使用します。
何百万人もありがとう。
c# - SqlNotificationEvent は、データベースへの単一の挿入でも複数回通知します
SqlNotificationEvent
データベースへの単一の挿入でも複数回通知します。
テーブル内の単一の挿入/更新/削除の場合でも、イベントは で数回通知されますがe.Type == SqlNotificationType.Change
、これが発生する理由を誰でも助けることができます。テーブルの単一の変更に対して一度だけ通知する必要があります。
c# - エンタープライズ ライブラリ SqlCacheDependency
アプリケーションでエンタープライズ ライブラリ アプリケーション ブロックを使用しており、SqlCacheDependency を使用する必要がありますが、キャッシュ ブロックには SqlDependency Expiration がありません。検索しようとしましたが、リンクが壊れている投稿が見つかりました (david hyden)。SQL を使用する何らかの方法が必要です。その中の通知。
asp.net - ASP.Net Webファームでは、データベースに依存しています。キャッシュは適切なアプローチですか?
WebファームのASP.Netアプリで、データベースに依存するデータキャッシュを使用することを検討していました。したがって、Webファーム内の各Webサーバーは、データベース値が変更されるとすぐにキャッシュ値を自動的に更新します。これにより、Webサーバー全体のすべてのキャッシュ値の同期が維持されるように見えます。これは良い考えのように聞こえますか、それとも何かが足りませんか?