sql >> Base de Datos >  >> RDS >> Sqlserver

Acceso de solo lectura al contenido del procedimiento almacenado

Puede otorgarles la VIEW DEFINITION privilegio para esos procesos.
Consulte aquí por lo que hace este privilegio.

Puede aplicar VIEW DEFINITION en diferentes ámbitos:

  • Servidor
  • Base de datos
  • Esquema
  • Entidades individuales (por ejemplo, un proceso, una función, una vista)

También puede usar una consulta para generar un script para muchos procesos.
Entonces, si tiene un usuario 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';

eso le dará algo como esto, que luego puede ejecutar:

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