SQL - Bloqueo de registros en SQL

 
Vista:

Bloqueo de registros en SQL

Publicado por Gualberto (5 intervenciones) el 18/05/2012 22:54:16
Hola, estoy desarrollando una aplicacion en VB.NET con SQL 2005 el caso es que siempre he desarrollado aplicaciones pequeñas para un usuario y ahora en este proyecto es una aplicacion de mediano tamaño para multi usuarios, estoy desarrollandolo de la siguiente manera en la base de datos tengo alojados todos los procedimientos almacenados para operaciones Insert, Update, Delete, y Qrys, para hacer mas agil el manejo del cliente y la utilizacion de recursos por parte del cliente pero mi duda es la siguiente.

¿Como trabajar el bloqueo de registros? para que cuando yo este editando un registro nadie mas lo pueda editar al mismo tiempo y por ejemplo si yo agrego un nuevo cliente me dara el id 1 (por ejemplo) y si al mismo tiempo otro usuario da de alta un cliente le dara el mismo ID por que no se ha grabado en la tabla, esto como se trabaja en SQL,

Si alguien me puede orientar con ejemplos, o alguna pagina donde pueda encontrar documentacion de esto se los agradecere.

Saludos

Atentamente

Gualberto Gómez
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Bloqueo de registros en SQL

Publicado por leonardo_josue (1173 intervenciones) el 18/05/2012 23:03:16
Hola Gualberto.

Es recomendable que trabajes con transacciones y de esta manera puedas manejar el nivel de Aislamiento que quieras en tus datos. checa estas dos ligas

http://www.guillesql.es/Articulos/SQLServerFAQ_Aislamiento_Transaccion_Isolation_Level.aspx

http://technet.microsoft.com/es-es/library/ms173763.aspx

Ahí encontrarás información que te será de utilidad.

Saludos
Leo
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

Bloqueo de registros en SQL

Publicado por Gualberto (5 intervenciones) el 21/05/2012 16:01:31
Leo muchas gracias son muy interesantes los links que me envias y muy informativos ahora solo una pregunta entonces SQL por default bloquea los registros a los que stoy entendiento y genera una copia de la fila en aun TBTEMP algo asi dice un articulo?
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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Bloqueo de registros en SQL

Publicado por leonardo_josue (1173 intervenciones) el 21/05/2012 18:16:49
Así es Gualberto... SQL Server realiza el bloqueo automático de los registros que se están utilizando para garantizar que la información no se corrompa debido al acceso de múltiples usuarios. Hay varios temas relacionados que sería conveniente que sigas leyendo... aquí te dejo algunas lecturas extras que estoy seguro te pueden ayudar...

http://msdn.microsoft.com/es-es/library/ms171959(v=sql.90)

Esto tiene que ver directamente con las lecturas que te sugerí en el post anterior... dale un vistazo completo a todos los temas.

Saludos
Leo.
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

Bloqueo de registros en SQL

Publicado por Gualberto (5 intervenciones) el 21/05/2012 19:57:41
Entonces para ser mas preciso ya lei lso articulos pero no me queda claro cual debo aplicar para los Qrys, y cual para las INSERT y las UPDATE, me puedes orientear por favor?
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

Bloqueo de registros en SQL

Publicado por Gualberto (5 intervenciones) el 23/05/2012 23:26:02
ALTER PROCEDURE [dbo].[SP_GRBCTE]
PARAMETROS
*
*
AS
BEGIN
/* ESTABLECER BLOQUEO DE REGISTRO */
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
BEGIN TRAN INSERTCTE
BEGIN TRY

INSERT INTO TB_CLIENTES (IDCLIENTE, NOMBRE, ) VALUES (@ID, @NOMBRE)
COMMIT TRAN INSERTCTE
END TRY
BEGIN CATCH
ROLLBACK TRAN INSERTCTE
END CATCH
END


Est es mi Procedimiento Almacenado alli estblezco el Bloqueo READ COMMITED para que los Qry puedan leer solo las transacciones confirmadas, alo que pude entender, este tipo de bloqueo lo aplico a todos los Store Procedure de INSERT, UPDATE, y QRY, esta correcto asi,

Gracias

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
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Bloqueo de registros en SQL

Publicado por leonardo_josue (1173 intervenciones) el 24/05/2012 18:50:57
Es correcto... esto debes aplicarlo cada vez que haces una actualización a la BD (Insert, update, delete)... el detalle es determinar qué tipo de Aislamiento es el adecuado... READ COMMITED es el más utilizado, pero no el único... es por eso que puse las primeras ligas, para que tuvieras un panorama general de todos los niveles de aislamiento que puedes manejar.

Saludos
Leo.
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

Bloqueo de registros en SQL

Publicado por Gualberto Gomez (5 intervenciones) el 25/05/2012 23:23:44
Si vi los demas aislamientos pero este a loq ue entendi solo lee las transacciones confirmadas por esto se me hace mejor para no tener datos basura en las consultas.

Muchas gracias por tu apoyo
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