it-swarm.com.de

Führen Sie eine gespeicherte Prozedur als eine andere Benutzerberechtigung aus

Ich hatte das folgende Problem: Es gibt einen Benutzer, der eine gespeicherte Prozedur (spTest) ausführen muss. Im Körper von spTest wird sp_trace_generateevent aufgerufen. sp_trace_generateevent erfordert Änderungsverfolgungsberechtigungen, und ich möchte nicht, dass der Benutzer dies hat. Ich möchte, dass der Benutzer spTest ausführen kann. Wie kann ich das machen? 

19
StuffHappens

Versuche dies:

EXECUTE AS user = 'special_user'

EXECUTE YourProcerdure

REVERT

siehe diese:
Kontextwechsel verstehen<<<has examples of things like you are trying to do
Ausführungskontext verstehen
EXECUTE AS-Klausel (Transact-SQL)
EXECUTE AS (Transact-SQL)

26
KM.

Wie von anderen vorgeschlagen, können Sie mit der Execute As-Klausel das erreichen, was Sie möchten. Beispiele für Implementierungsoptionen finden Sie in der Dokumentation zu Books Online für die Klausel Execute As .

Für das weitere Lesen und um ein besseres Verständnis dieses Themas zu erreichen, gehört das Sicherheitskonzept von Context Switching zum Ziel.

3
John Sansom

Das habe ich getan (und hatte Erfolg gehabt):

let Source = Sql.Database("server", "database", 
    [Query= "EXECUTE AS USER='user' EXECUTE [schema].[spname] 'parm1', 'parm2'"])

im

Source
1
Emilio Pastore