sql server - tipos - Ejecutar un procedimiento almacenado como otro permiso de usuario
stored procedure sql server español (4)
Me enfrenté al siguiente problema: hay un usuario que tiene que ejecutar un procedimiento almacenado (spTest). En el cuerpo de spTest se llama sp_trace_generateevent. sp_trace_generateevent requiere alterar los permisos de rastreo, y no quiero que el usuario lo tenga. Así que me gustaría que el usuario pueda ejecutar spTest. ¿Cómo puedo hacer eso?
Como otros han sugerido, puede lograr lo que desee con la cláusula Ejecutar como. Para ver ejemplos de opciones de implementación, eche un vistazo a la documentación de los Libros en línea para la cláusula Ejecutar como .
Para obtener más información y desarrollar una mejor comprensión de este tema, lo que está buscando lograr está incluido en el concepto de seguridad de Context Switching .
Cuando vaya a ejecutar ese procedimiento almacenado específico, deberá crear una conexión diferente utilizando las credenciales de usuario necesarias.
Esto es lo que hice (y tuve éxito):
let Source = Sql.Database("server", "database",
[Query= "EXECUTE AS USER=''user'' EXECUTE [schema].[spname] ''parm1'', ''parm2''"])
en
Source
Prueba esto:
EXECUTE AS user = ''special_user''
EXECUTE YourProcerdure
REVERT
ver estos:
Entendiendo el cambio de contexto <<<has examples of things like you are trying to do
Entendiendo el contexto de ejecución
EJECUTE AS Cláusula (Transact-SQL)
EJECUTAR COMO (Transact-SQL)