この回答は次のように述べています。
両方のエンドポイントで同じ conversation_id があります。
また、各エンドポイントで異なる必要がある conversation_handle があります。
そのため、会話の各エンドポイントで監査テーブルに conversation_id を書き込むと、トラブルシューティングに役立つと考えました。そうすれば、特定の会話の各エンドポイントで監査情報を簡単に追跡できます。
問題は、conversation_id をどこから取得するかです。私は当初、sys.conversation_endpoints から、送受信したばかりのメッセージの conversation_handle を検索できると考えていました。ただし、メッセージを送受信するデータベース ユーザーには、sys.conversation_endpoints のメタデータを表示する権限がありません。
メッセージを送受信するユーザーをデータベース所有者にすることでこれを回避できますが、セキュリティ上の理由からそうしないことをお勧めします。sys.conversation_endpoints のレコードを表示するために最低限必要なアクセス許可は何ですか? あるいは、送信または受信したばかりのメッセージの conversation_id を読み取るにはどうすればよいでしょうか (dbo または sysadmin 権限を持たない、送信または受信を行うコードから)。
編集:メタデータの可視性の構成に関するBooks Online の記事を読みました。
メタデータの可視性は、ユーザーが所有しているか、ユーザーが何らかの権限を付与されているセキュリティ保護可能なものに限定されます
sys.tables や sys.procedures などのカタログ ビューの場合、ユーザーにアクセス許可を付与する必要があるセキュリティ保護可能な要素は明らかです。しかし、sys.conversation_endpoints: 会話、会話エンドポイントにリストされているセキュリティ保護可能なものは何ですか? そして、どのようにアクセス許可を付与しますか? ユーザーは既にダイアログを開始したり会話を終了したりする権限を持っているので、会話に対する適切な権限が既にあると思っていたでしょう。