Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Sollte die CONTROL-Berechtigung für eine gespeicherte Prozedur in SQL Server 2005 erteilt werden?

Wenn die gespeicherte Prozedur mit EXECUTE AS CALLER erstellt wurde (was meiner Meinung nach die Standardeinstellung ist), muss der Aufrufer alle erforderlichen Berechtigungen haben, um alles zu tun, was die gespeicherte Prozedur zusätzlich zu EXECUTE für die Prozedur tut.

Aus der SQL Server-Dokumentation für EXECUTE AS:

Beachten Sie, dass dies aufgrund der Art und Weise, wie SQL Server Berechtigungsprüfungen mithilfe von Besitzketten verarbeitet, nicht immer genau richtig ist, und ich vermute, dass die Gewährung von CONTROL für die Prozedur (die dem Berechtigten den Besitzstatus verleiht) diese Berechtigungsprüfungen verursacht umgangen.

Wenn Sie die Prozedur mit EXECUTE AS OWNER erstellen, sollten Sie der Prozedur keine Berechtigungen über EXECUTE hinaus erteilen müssen.