MSSQLSERVER に、ログインユーザー太郎を作成して
ストアドZZZ に実行権限を渡したいので、
ストアドZZZを右クリック⇒プロパティ⇒権限⇒ユーザー太郎を選択⇒実行の許可にチェック(権限の許可者dbo)
として、ストアドを実行します。
ストアドの内容がシンプルなSELECT文だと問題ないのですが
(例:こういうやつ)
ストアドZZZ AS select * from tableBBB where 1=1
ストアドの中に動的SQLを書いてEXECで実行するとエラーになります。
(例:こういうやつ)
ストアドZZZ AS declare @sql nvarchar(max) = ''; set @sql += ' select *'; set @sql += ' from tableBBB'; IF 条件 BEGIN set @sql += ' where 1=1'; END ELSE BEGIN set @sql += ' where 2=2'; END EXEC(@sql);
エラー:
SELECT 権限がオブジェクト 'tableBBB'、データベース 'DB名'、スキーマ 'dbo' で拒否されました。
これって、tableBBBテーブルの参照権限にユーザー太郎を許可するしかないのでしょうか?
できれば、ストアド以外の権限は付けたくないのです。
何卒よろしくお願いいたします。
質問者さん、その後無言ですが、どうして EXECUTE を使うと対象テーブルに SELECT 権限を与える必要があるのかは Microsoft のドキュメントで説明しました。このスレッドはクローズしてください。まだ質問があるならそれを書いてください。オープンしておきたい理由があればその旨書いてください。とにかく無言で放置は NG です
回答1件
あなたの回答
tips
プレビュー