1

として指定されている SQL Server 2008 R2 データベースに計算列があります(suser_sname([USERSID]))。プログラムで新しいユーザーが作成されると、Active Directory ユーザーが作成され、新しいユーザーの SID を含むレコードがデータベースに挿入されます[USERSID]

新しいユーザーのレコードを作成した直後にデータベースから新しいユーザーのレコードを開こうとすると、計算されたユーザー名は常に空白になります。ユーザー名が解決されるまで数秒かかる場合があります。これは、ユーザーが Active Directory で作成された場合にのみ発生し、ローカル マシンでユーザーを作成する場合には発生しません。

を使用して、データベースではなくコードでロジックを実行しようとしましたが、この呼び出しを行っLookupAccountSidた後に を受け取りました。ERROR_NONE_MAPPED

また、 をスローSecurityIdentifier.Translateする と同様の結果で使用してみました。LookupAccountSidIdentityNotMappedException

これらの呼び出しのいずれかが行われる前に、デバッグ中に実行を数秒間一時停止すると、正しい値が返されます。

新しい Active Directory ユーザーを作成した後、数秒間ユーザー名の値を返すことができないのはなぜですか? この値をより早く正しく返すよう強制する方法はありますか? または (スリープして値を再チェックする以外に) 利用可能になるのを待ちますか?

4

0 に答える 0