SQL Server - Concurrencia

 
Vista:

Concurrencia

Publicado por manuel (5 intervenciones) el 18/09/2007 10:09:25
Hola a todos,mi duda es la siguiente, estoy trabajando con sql server 2005 y queria sabar si este gestor trabaja internamente con algun tipo de concurrencia (optimista,pesimista,...) y si se puede configurar con el tipo de concurrencia que quieres que trabaje.O esto de la concurrencia lo hay que controlar desde el programa que se conecta a la BBDD????
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Concurrencia

Publicado por Isaias (3308 intervenciones) el 18/09/2007 18:43:19
Manuel

Con una vez que preguntes, es suficiente.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Concurrencia

Publicado por manuel (5 intervenciones) el 19/09/2007 09:35:44
Perdon fue un fallo mio, pero cual seria la solucion mejor??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Concurrencia

Publicado por monky (56 intervenciones) el 24/09/2007 02:09:12
El control de la concurrencia se programa usando las transacciones SQL; las cuales son una o varias sentencias sql que se ejecutan como una sola LUW (unidad logica de trabajo)
El control de transacciones concurrentes en una base de datos brinda un eficiente desempeño en un Motor de Datos, puesto que permite controlar la ejecución de transacciones que operan en paralelo, accesando a información compartida y, por lo tanto, interfiriendo potencialmente unas con otras...
Junto con la programacion transaccional es recomendable a veces cambiar el bloqueo (tipo de acceso que se permite a un elemento) .... el defecto es nivel de pagina ; por lo que cambiarlo a nivel de Row ayudaria bastante (esto ultimo depende del motor que estas usando; ya que no todos permiten a nivel de fila).
Te voy a poner un ejemplo de una transaccion en un procedimiento almacenado para que te hagas una idea de que significa trabajar con aplicaciones sql que manejen la concurrencia...
la clave es el BEGIN TRAN ... COMMIT o ROLLBACK END TRAN

create procedure spa_adp_eli_anotaciones (
@cd_empresa smallint,
@id_proyecto int,
@fc_anotacion datetime)
AS
BEGIN TRAN

declare @error int,
@msg varchar(255)

-- Elimina Anotacion

delete from SGC_ANOTACIONES
where cd_empresa = @cd_empresa
and id_proyecto = @id_proyecto
and fc_anotacion = @fc_anotacion

select @error=@@error

if @error != 0
begin
select @msg = "*** ERROR AL ELIMINAR ANOTACION ***"
goto fin
end

-- Commit de transaccion

commit tran
select 0 RETORNO, @msg MSG
return

-- Subrutinas
fin:
rollback tran
select -1 RETORNO, @msg MSG
return
go

Espero te sirva

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar