Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Ejecutar sentencias sql desde la aplicación o desde un procedimiento almacenado?

Estas en el tema de Ejecutar sentencias sql desde la aplicación o desde un procedimiento almacenado? en el foro de SQL Server en Foros del Web. Que tal buenas tardes... Estoy analizando la manera más optima de hacer consultas a la base de datos por medio de una aplicación web, para ...
  #1 (permalink)  
Antiguo 26/09/2008, 13:27
Avatar de usuariobaneado  
Fecha de Ingreso: diciembre-2007
Mensajes: 402
Antigüedad: 16 años, 4 meses
Puntos: 5
Pregunta Ejecutar sentencias sql desde la aplicación o desde un procedimiento almacenado?

Que tal buenas tardes...

Estoy analizando la manera más optima de hacer consultas a la base de datos por medio de una aplicación web, para lo cual tengo dos casos:

Desde la aplicación web abrir una conexión y una transacción, armar y ejecutar las sentencias sql necesarias (inserts, updates, deletes) luego hacer un commit tran y cerrar la conexión. Todo ejecutado desde la aplicación.

Desde la aplicación web abrir una conexión, armar un xml que contengan todos los datos, enviarselos a un procedimiento almacenado, crear una transacción (sentencia BEGIN TRAN) y que el procedimiento almacenada haga todos los inserts, updates y deletes necesarios para luego hacer un COMMIT TRAN y controlar los errores con un ROLL BACK TRAN.

Yo digo que sería mejor la segunda porque solo llamo a un procedimiento y el profiler me aparecerá una sola ejecución la cual la voy a poder analizar en el caso de algún problema. En cambio de la primera forma en el profiler me aparecerán muchas sentencias ejecutadas. Un compañero me dice que de la segunda forma voy a sobrecargar el servidor, que es mejor que se ejecuten sentencias desde la aplicación web. Y yo le replico que sea como sea las sentencias sql llegarán al servidor y se ejecutarán ya que por la lógica del negocio de una u otra forma deberán ejecutarse.

Entonces que es mejor, llamar a un procedimiento almacenado que haga todo, o ejecutar sentencias sql desde la aplicación?
__________________
Yo quiero ser el pelucón del barrio
  #2 (permalink)  
Antiguo 26/09/2008, 15:39
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ejecutar sentencias sql desde la aplicación o desde un procedimiento almac

Si, es mejor la 2a opcion, solo que las transacciones debes manejarlas a nivel base de datos.
  #3 (permalink)  
Antiguo 26/09/2008, 16:23
Avatar de usuariobaneado  
Fecha de Ingreso: diciembre-2007
Mensajes: 402
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Ejecutar sentencias sql desde la aplicación o desde un procedimiento almac

Claro, a eso me refería cuando decía que ponía un BEGIN TRAN, eso va en el procedimiento almacenado. Es decir que no la transaccionalidad la controlo desde el procedimiento y no desde la aplicación.

Gracias por la atención Isaías, pero mi pregunta es porqué la segunda opción es la mejor, mejor dicho, porque la primera alternativa es menos óptima.

Saludos
__________________
Yo quiero ser el pelucón del barrio
  #4 (permalink)  
Antiguo 26/09/2008, 16:40
 
Fecha de Ingreso: noviembre-2006
Ubicación: México
Mensajes: 866
Antigüedad: 17 años, 6 meses
Puntos: 8
Respuesta: Ejecutar sentencias sql desde la aplicación o desde un procedimiento almac

Es menos optima porque la transacción la controla la aplicación y esto implica, más memoria, más recurso de red(idas y vueltas), en consecuencia más tiempo. Además si tu servidor de aplicación y servidor de datos estan en servidores distintos tienes que realizar configuración extra para que puedan sincronizarse.

Saludos.
  #5 (permalink)  
Antiguo 26/09/2008, 16:52
Avatar de usuariobaneado  
Fecha de Ingreso: diciembre-2007
Mensajes: 402
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Ejecutar sentencias sql desde la aplicación o desde un procedimiento almac

Servidor web y servidor de base de datos están en el mismo servidor
__________________
Yo quiero ser el pelucón del barrio
  #6 (permalink)  
Antiguo 26/09/2008, 18:23
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ejecutar sentencias sql desde la aplicación o desde un procedimiento almac

Existe una regla en el diseño y desarrollo de sistemas, cumplir con las 3 capas, FRONT-TRAN-BACKEND

Desde el FRONT, solo debe haber ejecucion de STORE PROCEDURE.

¿Porque?, Si cambia la estructura de tu base, no tendras que cambiar tus aplicativos, solo tendrias que modificar tus store procedure, aunado a lo que comenta daniel00
  #7 (permalink)  
Antiguo 29/09/2008, 08:37
Avatar de usuariobaneado  
Fecha de Ingreso: diciembre-2007
Mensajes: 402
Antigüedad: 16 años, 4 meses
Puntos: 5
Respuesta: Ejecutar sentencias sql desde la aplicación o desde un procedimiento almac

Gracias por la atención estimados amigos... Una última consulta, cuando mencionas TRAN te refieres a la capa de la lógica del negocio?
__________________
Yo quiero ser el pelucón del barrio
  #8 (permalink)  
Antiguo 29/09/2008, 09:24
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Ejecutar sentencias sql desde la aplicación o desde un procedimiento almac

Se refiere a la capa que controla las TRANSACCIONES, en algunos motores (incluso en SQL Server), existe software especial para administrar esta capa, aunque sql server, te permite hacerlo mediante el manejo de transacciones explicitas.

BEGIN TRAN <mitran>
............. codigo sql
............. codigo sql
IF <condicion>
BEGIN
............. codigo sql
ROLLBACK TRAN <mitran>
RETURN(0)
END
............. codigo sql
............. codigo sql
COMMIT TRAN <mitran>
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:34.