Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Procédure stockée et autorisations - EXECUTE suffit-il ?

Les autorisations sur les tables ne sont pas vérifiées (y compris DENY) si les tables et proc ont le même propriétaire. Ils peuvent également se trouver dans des schémas différents tant que les schémas ont le même propriétaire.

Voir Chaînage de propriété sur MSDN

Modifier, à partir d'un commentaire d'une réponse supprimée.

Le contexte est toujours la connexion actuelle sauf si EXECUTE AS tel qu'il a été utilisé :seules les autorisations DML de l'objet référencé ne sont pas vérifiées. Essayez OBJECT_ID(referencedtable) dans une procédure stockée où aucun droit n'est attribué à referencedtable. Cela donne NULL. S'il est exécuté par le propriétaire du proc stocké, il donnerait une valeur car le propriétaire a des droits sur la table référencée