SQL Server - Concurrencia en acceso a datos de una base de datos de SQL Server

   
Vista:

Concurrencia en acceso a datos de una base de datos de SQL Server

Publicado por Karen Paola Vaca Zurita (1 intervención) el 17/06/2015 22:56:06
¿ Cómo puedo solucionar el problema de concurrencia en acceso a Datos de Sql Server ?
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

Concurrencia en acceso a datos de una base de datos de SQL Server

Publicado por Rafael (88 intervenciones) el 18/06/2015 11:36:33
Depende de la version y sobre todo el problema...

Valga el comentario pero decir que tienes un problema de concurrencia es muy vago ...

Mientras nos aclaras mas el tema y nos dices especificamente que ocurre para darte opciones aqui encontraras algo de documentacion...

https://www.fdi.ucm.es/profesor/fernan/DBD/apuntestema07.pdf
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
Imágen de perfil de Isaias

Concurrencia en acceso a datos de una base de datos de SQL Server

Publicado por Isaias (3186 intervenciones) el 18/06/2015 18:17:52
Si tuvieras una versión 2005 o superior, este query te permite identificar "QUIEN" esta bloqueando


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT t1.resource_type AS [lock type],DB_NAME(resource_database_id) AS [database],
t1.resource_associated_entity_id AS [blk object],t1.request_mode AS [lock req],  --- lock requested
t1.request_session_id AS [waiter sid], t2.wait_duration_ms AS [wait time],       -- spid of waiter
(SELECT [text] FROM sys.dm_exec_requests AS r                                    -- get sql for waiter
CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle])
WHERE r.session_id = t1.request_session_id) AS [waiter_batch],
(SELECT SUBSTRING(qt.[text],r.statement_start_offset/2,
    (CASE WHEN r.statement_end_offset = -1
    THEN LEN(CONVERT(nvarchar(max), qt.[text])) * 2
    ELSE r.statement_end_offset END - r.statement_start_offset)/2)
FROM sys.dm_exec_requests AS r WITH (NOLOCK)
CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle]) AS qt
WHERE r.session_id = t1.request_session_id) AS [waiter_stmt],    -- statement blocked
t2.blocking_session_id AS [blocker sid],                         -- spid of blocker
(SELECT [text] FROM sys.sysprocesses AS p                        -- get sql for blocker
CROSS APPLY sys.dm_exec_sql_text(p.[sql_handle])
WHERE p.spid = t2.blocking_session_id) AS [blocker_stmt]
FROM sys.dm_tran_locks AS t1 WITH (NOLOCK)
INNER JOIN sys.dm_os_waiting_tasks AS t2 WITH (NOLOCK)
ON t1.lock_owner_address = t2.resource_address OPTION (RECOMPILE);
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