データベースからデータを選択する一連のストアドプロシージャがあります。プロシージャに実行権限が付与されているロール(cctc_reader)があります。プロシージャの1つが別のストアドプロシージャを呼び出しrecControl_system_option
、それがクエリを実行しInformation_schema.columns
ます。
問題は、このプロシージャでクエリが実行されることです
select column_name from information_schema.columns where table_name = 'recControl_manager'
レコードを返しません。cctc_readerには、次の権限が付与されています。
- 各selectproc
recControl_system_option
したがって、理論的にはこれでうまくいくはずです。dboで実行しても問題ありません。
db_datareaderをcctc_readerに付与した場合、クエリは問題ありませんが、すべてのテーブルにリーダー権限を付与したくありません(したがって、ストアドプロシージャを使用した理由)。いくつかの記事で提案されているように、マスターデータベースのInformation_schemaにSelect権限を付与しようとしましたが、それでもこれを機能させることができません。
助言がありますか?