次の問題に直面しました:ストアドプロシージャ(spTest)を実行しなければならないユーザーがいます。 spTestの本体で、sp_trace_generateeventが呼び出されます。 sp_trace_generateeventには、トレースの変更権限が必要ですが、ユーザーにそれを許可したくありません。したがって、ユーザーがspTestを実行できるようにしたいと考えています。どうやってやるの?
これを試して:
EXECUTE AS user = 'special_user'
EXECUTE YourProcerdure
REVERT
これらを参照してください:
コンテキスト切り替えについて<<<has examples of things like you are trying to do
実行コンテキストについて
EXECUTE AS句(Transact-SQL)
EXECUTE AS(Transact-SQL)
他の人が提案したように、Execute As句を使用すると、希望どおりの結果を得ることができます。実装の選択肢の例については、Books Onlineのドキュメントで Execute As 句を参照してください。
このトピックをさらに読み、理解を深めるために、達成しようとしていることは、セキュリティコンセプト Context Switching の下にあります。
これは私がやった(そして成功した)ものです:
let Source = Sql.Database("server", "database",
[Query= "EXECUTE AS USER='user' EXECUTE [schema].[spname] 'parm1', 'parm2'"])
に
Source