このクエリを使用して、ユーザーのストアプロシージャにアクセス許可を追加しようとしています。
USE [MyDatabaseName]
GO
GRANT EXEC ON [dbo].[StoreProcedureName] TO [UserName]
GO
ユーザーインターフェイスを介してユーザーにアクセス許可を与えることができますしかし、このクエリを使用するとこのエラーが発生します。
ユーザー 'UserName'が見つからないか、権限がありません。
アクセス許可がない場合、ユーザーインターフェイスを使用してアクセス許可を追加するにはどうすればよいですか。
私はちょうど同じ問題に遭遇しました。
マスターテーブルにログイン用のユーザーマッピングがあることを確認します。データベースロールメンバーシップは必要ありません。ログイン 'UserName'のプロパティの 'User Mapping'で、データベースマスタの 'Map'にチェックを入れるだけです。
これを実行します:
USE [db_where_you_need_access]
GO
CREATE USER [your_user] FOR LOGIN [your_user]
この問題が発生しましたが、サーバーのローカル管理者グループに所属しています。管理者としてSQL Server Management Studioを実行しているUACがオンになっていると、明らかに違いが生じます。これを行うまで、私には許可がありませんでした。
データベースが別のサーバーから復元され、データベース内のユーザーのGUIDが現在のサーバーのものと異なる場合に、このような問題が発生する可能性があります。
これにより、孤立したユーザーが再リンクされます。
USE <database_name>;
GO
sp_change_users_login @Action='update_one', @UserNamePattern='<database_user>',
@LoginName='<login_name>';
GO
これ以外に、ユーザーが存在し、関連するセキュリティ権限を持っている場合、何をしてもうまくいかない理由はありません。