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. Entonces me gustaría que el usuario pueda ejecutar spTest. ¿Cómo puedo hacer eso?Ejecutar un procedimiento almacenado como permiso de otro usuario
Respuesta
Prueba esto:
EXECUTE AS user = 'special_user'
EXECUTE YourProcerdure
REVERT
Vea éstas:
Understanding Context Switching<<<has examples of things like you are trying to do
Understanding Execution Context
EXECUTE AS Clause (Transact-SQL)
EXECUTE AS (Transact-SQL)
Cuando vaya a ejecutar ese procedimiento almacenado específico, necesitará crear una conexión diferente utilizando las credenciales de usuario necesarias.
Por alguna razón, does't ayuda. Me da error que no tengo permiso para ejecutar sp_trace_generateevent. Pero cuando me conecto al servidor como special_user no tengo problemas para ejecutar sp_trace_generateevent. ¿Algunas ideas? – StuffHappens
Como otros han sugerido que puede lograr lo que usted desea usando el EXECUTE AS cláusula. Para ver ejemplos de opciones de implementación, consulte la documentación de Libros en pantalla para la cláusula Execute As.
Para seguir leyendo y desarrollar una mayor comprensión de este tema, lo que está buscando lograr viene bajo el concepto de seguridad Context Switching.
Esto es lo que hice (y exitoso):
let Source = Sql.Database("server", "database",
[Query= "EXECUTE AS USER='user' EXECUTE [schema].[spname] 'parm1', 'parm2'"])
en
Source
- 1. Procedimiento almacenado al ejecutar otro procedimiento almacenado
- 2. Ejecutar un procedimiento almacenado dentro de un procedimiento almacenado
- 3. Cómo llamar a un procedimiento almacenado desde otro procedimiento almacenado?
- 4. ¿Cómo ejecutar un procedimiento almacenado de Oracle?
- 5. ¿Usar la función como parámetro al ejecutar un procedimiento almacenado?
- 6. Ejecución de una Proc almacenado de Oracle como otro usuario
- 7. ¿Cómo desactivo los resultados de la consulta al ejecutar un procedimiento almacenado desde un procedimiento almacenado?
- 8. Ejecutar procedimiento almacenado con valores de tabla como parámetro
- 9. consulta de Oracle para buscar privilegios en un procedimiento almacenado
- 10. Cómo crear un procedimiento almacenado dentro de otro procedimiento almacenado en SQL Server 2008
- 11. Cómo llamar a un procedimiento almacenado (con parámetros) desde otro procedimiento almacenado sin tabla temporal
- 12. Procedimiento almacenado y permisos: ¿es suficiente EJECUTAR?
- 13. TSQL: llame a un procedimiento almacenado desde otro procedimiento almacenado y lea el resultado
- 14. ¿Cómo usar un valor de un procedimiento almacenado en otro?
- 15. Ejecutar procedimiento almacenado en SQL Developer?
- 16. Accediendo a la tabla de otro usuario dentro de un Procedimiento almacenado de Oracle
- 17. permiso Crear procedimiento sólo
- 18. Servidor MS SQL: verifique si un usuario puede ejecutar un procedimiento almacenado
- 19. ¿Ejecutar el procedimiento almacenado con un parámetro de salida?
- 20. Ejecutar un procedimiento almacenado de SQL y procesar los resultados
- 21. Llamar a procedimiento almacenado de otro SQL procedimiento almacenado del servidor
- 22. ¿Debo usar sp_executesql o EXEC para ejecutar un procedimiento almacenado?
- 23. Llamar a un procedimiento almacenado con otro en Oracle
- 24. Cómo ejecutar un procedimiento almacenado dentro del programa C#
- 25. ¿Por qué no se puede usar la instrucción INSERT EXEC dentro de un procedimiento almacenado llamado por otro procedimiento almacenado?
- 26. ¿Cómo ejecutar automáticamente un procedimiento almacenado según el programador?
- 27. Ejecutar un script SQL almacenado como recurso
- 28. ¿Se debe otorgar el permiso CONTROL en un Procedimiento almacenado en SQL Server 2005?
- 29. ¿Cuál es la sintaxis para definir un procedimiento de Oracle dentro de otro procedimiento almacenado?
- 30. ¿Cómo se usa el resultado de SELECT en un procedimiento almacenado en otro procedimiento de srored?
Por alguna razón, no ayuda. Me da error que no tengo permiso para ejecutar sp_trace_generateevent. Pero cuando me conecto al servidor como special_user no tengo problemas para ejecutar sp_trace_generateevent. ¿Algunas ideas? – StuffHappens
desde: http://msdn.microsoft.com/en-us/library/ms181362.aspx El nombre de usuario o de inicio de sesión especificado en EXECUTE AS debe existir como un principal en sys.database_principals o sys.server_principals, respectivamente, o la instrucción EXECUTE AS falla. Además, los permisos IMPERSONATE deben otorgarse en el principal. A menos que la persona que llama sea el propietario de la base de datos o sea miembro de la función fija del servidor sysadmin, el principal debe existir incluso cuando el usuario acceda a la base de datos o instancia de SQL Server a través de una membresía de grupo de Windows. –
Esta sugerencia no ayuda tampoco. Parece que debería encender TRUSTWORTHY. Gracias de todos modos. – StuffHappens