現在、Master データベースの CONTEXT_INFO プロパティを使用して、ログインしたユーザー名を保存し、後でテーブル トリガーで監査用に使用しています。
SQL Azure への移行中に、クロスデータベース接続の問題が発生し、この問題に対する直接的な解決策を見つけることができませんでした。
問題の詳細は次のとおりです。
- データ アクセス レイヤーからストアド プロシージャ XXX を呼び出し、ユーザー名をパラメーターとして渡します。
- ユーザー名は、XXX の CONTEXT_INFO 値を設定するために使用されます。
- CONTEXT_INFO 値は、テーブルの挿入/更新/削除トリガーで使用され、アプリケーション監査用のユーザー名を格納します。
これまでに見つけた解決策:
- CONTEXT_INFOとして機能するテーブルをデータベースに作成
- データ アクセス レイヤーで 2 つの接続文字列を使用します。1 つはマスター データベース用 (CONTEXT_INFO を設定するため)、もう 1 つはアプリケーション用であり、アプリケーションへの接続を開く前に毎回 SET CONTEXT_INFO を実行します。
しかし、将来的に複数の SQL Azure データベースにデータベースを拡張する場合は特に、どちらのソリューションも危険だと思います。
あなたの支援に感謝。