Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Acesso somente leitura ao conteúdo do procedimento armazenado


Você pode conceder a eles a VIEW DEFINITION privilégio para esses procs.
Veja aqui para o que esse privilégio faz.

Você pode aplicar VIEW DEFINITION em diferentes âmbitos:
  • Servidor
  • Banco de dados
  • Esquema
  • Entidades individuais (por exemplo, um proc, uma função, uma visualização)

Você também pode usar uma consulta para gerar um script para muitos procs.
Então, se você tiver um usuário 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';

que lhe dará algo assim, que você pode executar:
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;
...