アプリケーションで SQL Server 管理オブジェクトを使用しています。アプリケーション内の SMO オブジェクトに対するほとんどの操作は、UI から直接トリガーされます。たとえば、ユーザーがオブジェクトを操作すると、SMO オブジェクト (テーブル、ビューなど) からプロパティの読み取りまたは書き込みが行われます。
ここで、一部のオブジェクトを定期的にスキャンするバックグラウンド操作を導入したいと思います (読み取り専用)。
私の質問は、これが SMO で問題を引き起こす可能性があるかどうかです。ドキュメントから、オブジェクトのインスタンス メンバーがスレッド セーフではないことがわかります。そのため、私の計画では、UI またはバックグラウンド スレッドからアクセスするたびに、単一の SMO オブジェクトごとにロックを設定します。しかし、2 つの異なるオブジェクト (View と Table など) に同時にアクセスするとどうなるでしょうか。プロパティの読み取りのみを行ったとしても、オブジェクトが完全に初期化されていない可能性があり、データベースからロードする必要があります。したがって、最悪の場合、SMO は両方のオブジェクトを同時に初期化する必要があります。SMO がこれを内部でどのように処理しているかは知らないので、これが SMO によって許可されているかどうか、または問題が発生するかどうかを誰かが知っているかどうか疑問に思っていました。
これを解決する方法に関する他の提案はありますか? SMO ライブラリ全体のグローバル ロックを回避したいのですが...
ありがとう!