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

Accesso in sola lettura ai contenuti della procedura memorizzata

Puoi concedere loro il VIEW DEFINITION privilegio a tali processi.
Vedi qui per quello che fa questo privilegio.

Puoi applicare VIEW DEFINITION in diversi ambiti:

  • Server
  • Banca dati
  • Schema
  • Singole entità (ad es. un processo, una funzione, una vista)

Puoi anche utilizzare una query per generare uno script per molti processi.
Quindi se hai un utente 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';

che ti darà qualcosa del genere, che puoi quindi eseguire:

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;
...