[csharp-l] Ejecutar Stored Procedure fuera de la transaccion

Buenas, tengo el siguiente problema:

 

Necesito ejecutar un stored procedure del sistema (sql server 2005) que se llama sp_setapprole (asigna permisos a grupos de usuarios).

 

Lo estoy ejecutando así dentro de un procedimiento Genexus (también fue probado en reporte y work panel):

        &FuncionDeAplicUsr = 'FuncionDeAplicacion'

        &FuncionDeAplicPas = 'xxx'

        &variable = "exec sp_setapprole " + " " + "'" + trim(&FuncionDeAplicUsr) + "'" + "," + "'" + trim(&FuncionDeAplicPas) +  "'"

        SQL [!&variable!] 

 

Tira un error diciendo que el stored procedure no puede ejecutarse dentro de una transacción.

 

Probé ponerle un commit antes de ejecutar esta sentencia y mismo error.

 

Si ejecuto esto desde SQL Server, lo hace sin problemas!!!

sql exec sp_setapprole 'FuncionDeAplicacion', 'xxx'

 

Si lo ejecuto con call() desde gx (agregándolo previamente a List of external stored procedures)

    call('sp_setapprole', 'FuncionDeAplicacion', 'xxx' )

 

Tira un error diciendo que todos los parámetros deben ser de salida, y en este caso son de entrada.

 

También probé:

1         - Crear un stored procedure intermedio, que llame a sp_setapprole. (Según lo que leí, no se puede llamar a un stored procedure dentro de otro).

2         - Antes de ejecutar sp_setapprole, hacer un end transaction. (No pudimos hacer funcionar esta sentencia).

 

Luego, logré ejecutar el stored procedure, con un commit transaction antes de llamarlo. Pero esto derivó en un nuevo error al querer actualizar o insertar en la BD:

 

This SqlTransaction has completed; it is no longer usable.

 

Probé poner un begin transaction al término del stored procedure, pero sigue tirando el mismo error.

 

Utilice la propiedad Execute in new LUW = Yes, y no da error. Creo que ejecuta el sp, pero como lo hace en otra conexión, los permisos con los que corre la aplicación no son los que tendrían que ser.

 

Genexus 9.0

NET

WIN

 

Alguien tiene otra idea??

 

Saludos

 

 


MARTIN KOPECH

Desarrollo de Sistemas

SoftING S.R.L.

makopech@e-softing.com.ar

www.e-softing.com.ar

San Lorenzo 1333 7º B - Rosario

(0341) 5271066/67 int. 107

1 Response to "[csharp-l] Ejecutar Stored Procedure fuera de la transaccion"

  1. LA CHISPA says:
    26 de marzo de 2013 a las 6:00

    Buenos días, tengo el mismo problema al querer realizar un backup, he consultado en diferentes foros pero no he recibido respuesta alguna. Me gustaría saber si has logrado solucionarlo para que me puedas orientar. Gracias!

    Te dejo mi e-mail gerardoi@targetminds.com.ar

Publicar un comentario