Me falta algo al intentar utilizar mi procedimiento almacenado EXECUTE AS
. El procedimiento almacenado lee datos source_db
, los agrega y almacena los resultados target_db
.
El sp en sí está adentro target_db
. Tengo un inicio de sesión dedicado y lo asigno a los usuarios en ambos source_db
y target_db
para el propietario de sp (por lo que hay un usuario app_agent
en source_db
y target_db
para iniciar sesión app_agent
).
Si inicio sesión como app_agent
y ejecuto
EXEC target_db.app_agent_schema.import_data
Todo funciona bien. Pero si cambio
ALTER PROCEDURE app_agent_schema.import_data WITH EXECUTE AS OWNER` (or `AS SELF`)
e intenta ejecutarlo, arroja
El servidor principal "app_agent" no puede acceder a la base de datos "source_db" en el contexto de seguridad actual.
Estoy usando SQL Server 2008.
¿Alguien podría señalar mi error?
Gracias
Actualización
Después de investigar un poco, descubrí que ALTER DATABASE target_db SET TRUSTWORTHY ON
resuelve el problema, pero eso no me parece la solución correcta ...