sql >> Database teknologi >  >> RDS >> Sqlserver

Skal CONTROL-tilladelse gives på en lagret procedure i SQL Server 2005?

Hvis den lagrede procedure blev oprettet ved hjælp af EXECUTE AS CALLER (som jeg mener er standard), skal den, der ringer, have alle de nødvendige tilladelser til at gøre, hvad den lagrede procedure gør ud over EXECUTE på proceduren.

Fra SQL Server-dokumentationen for EXECUTE AS:

Bemærk, at på grund af den måde, SQL Server behandler tilladelsestjek ved hjælp af ejerskabskæder, er dette strengt taget ikke altid sandt, og jeg gætter på, at tildeling af KONTROL på proceduren (som giver ejerskabsstatus til bevillingsmodtageren) forårsager, at disse tilladelsestjek bliver omgået.

Hvis du opretter proceduren med UDFØR SOM EJER, så skulle du ikke have behov for at give nogen tilladelser ud over UDFØR på proceduren.



  1. MySQL SELECT id for række, hvor STØRSTE af MAX indgange i flere kolonner

  2. Kan ikke oprette forbindelse til Vagrant ved hjælp af HeidiSQL:Kan ikke oprette forbindelse til MySQL-server på 'localhost'

  3. Udskrivning af værdien af ​​en variabel i SQL Developer

  4. Sådan trimmes tiden fra tidsstemplet ved hjælp af php