データベースに対して次のクエリを実行しています。
execute as user = 'domain\username'
select * from fn_my_permissions(null, 'DATABASE')
order by subentity_name, permission_name
revert;
しかし、次のエラーがスローされます。
Cannot execute as the database principal because the principal "dev\spadmin" does not exist, this type of principal cannot be impersonated, or you do not have permission.
ユーザーはデータベースの dbo であり、管理スタジオでプロパティを開くと、そのログインに関連付けられていることがわかります。一方、実行EXECUTE AS LOGIN = 'domain\username'
すると結果が返されます。を明示的に実行するEXECUTE AS USER = 'dbo'
と、結果が得られます。EXECUTE AS USER
この同じシナリオが と の両方で結果を返す別のデータベースもありEXECUTE AS LOGIN
ます。
別のユーザーによる別のシナリオでは、実行したところEXECUTE AS LOGIN = 'domain\username'
結果が得られませんでしたが、EXECUTE AS USER = 'domain\username'
.
これらのシナリオの両方のユーザーは、データベースのメンバーであるログインに関連付けられてdb_owner
います。
これらのクエリが期待する結果を返さない理由を誰か教えてもらえますか? また、重要な情報が不足している場合はお知らせください。ありがとう!