J'ai rencontré le problème suivant: il y a un user qui doit exécuter une procédure de sauvegarde stockée (spTest). Dans le corps de spTest, sp_trace_generateevent est appelé. sp_trace_generateevent nécessite des permissions de modification de trace et je ne veux pas que l'user l'ait. Je voudrais donc que l'user puisse exécuter spTest. Comment puis je faire ça?
Merci de votre aide.
Essaye ça:
EXECUTE AS user = 'special_user' EXECUTE YourProcerdure REVERT
voir ces:
Comprendre le changement de context <<<has examples of things like you are trying to do
Comprendre le context d'exécution
Clause EXECUTE AS (Transact-SQL)
EXECUTE AS (Transact-SQL)
Comme d'autres l'ont suggéré, vous pouvez réaliser ce que vous souhaitez en utilisant la clause Execute As. Pour get des exemples de choix d'implémentation, consultez la documentation de la documentation en ligne de la clause Execute As .
Pour en savoir plus et pour développer une meilleure compréhension de ce sujet, ce que vous cherchez à réaliser relève du concept de security du changement de context .
c'est ce que j'ai fait (et réussi):
let Source = Sql.Database("server", "database", [Query= "EXECUTE AS USER='user' EXECUTE [schema].[spname] 'parm1', 'parm2'"])
dans Source
Lorsque vous allez exécuter cette procédure stockée spécifique, vous devrez créer une connection différente en utilisant les informations d'identification user nécessaires.