管理者権限を持つ 1 人のユーザーとしてストアド プロシージャを作成し、
WITH EXECUTE AS SELF
次に、特権を持たないユーザーでストアド プロシージャを実行しようとしており、管理者であるユーザーになりすまそうとしています。
しかし、ユーザーには一括読み込みを使用する権限がないというエラーが返されます。
とにかくこれを丸めますか?
管理者権限を持つ 1 人のユーザーとしてストアド プロシージャを作成し、
WITH EXECUTE AS SELF
次に、特権を持たないユーザーでストアド プロシージャを実行しようとしており、管理者であるユーザーになりすまそうとしています。
しかし、ユーザーには一括読み込みを使用する権限がないというエラーが返されます。
とにかくこれを丸めますか?
管理者ユーザーがprocを実行できると思いましたよね?
通話の様子を教えていただけますか?
EXECUTE AS USER = 'user_with_permission'
EXECUTE AS SELFは、procを呼び出すユーザーとして実行することを意味するため、procを呼び出す前に次のようなことを行う必要があります。
このクエリを使用して、プロシージャの "self" であるプリンシパルの ID を見つけることができます。
select execute_as_principal_id
from sys.sql_modules
where object_id = object_id('YourProcedureName')
私にとっては、null
ほとんどの場合、それはうまくいかないようです。代わりにこれを試してください:
WITH EXECUTE AS 'UserWhoHasAdminRights'
または DBO として実行するには:
WITH EXECUTE AS OWNER