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

Accès en lecture seule au contenu des procédures stockées

Vous pouvez leur accorder la VIEW DEFINITION privilège à ces procs.
Voir ici pour ce que fait ce privilège.

Vous pouvez appliquer VIEW DEFINITION à différentes portées :

  • Serveur
  • Base de données
  • Schéma
  • Entités individuelles (par exemple, une procédure, une fonction, une vue)

Vous pouvez également utiliser une requête pour générer un script pour de nombreuses procédures.
Donc, si vous avez un utilisateur Bob :

SELECT N'GRANT VIEW DEFINITION ON '
    + QUOTENAME(SPECIFIC_SCHEMA)
    + N'.'
    + QUOTENAME(SPECIFIC_NAME)
    + N' TO Bob;'
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = 'PROCEDURE';

cela vous donnera quelque chose comme ceci, que vous pourrez ensuite exécuter :

GRANT VIEW DEFINITION ON [dbo].[aspnet_RegisterSchemaVersion] TO Bob;
GRANT VIEW DEFINITION ON [dbo].[aspnet_CheckSchemaVersion] TO Bob;
GRANT VIEW DEFINITION ON [dbo].[aspnet_Applications_CreateApplication] TO Bob;
...