sp_lock script query los evitar deadlocks como check sql sql-server database tsql deadlock

query - sql server deadlock script



Consulta SQL para obtener los deadlocks en SQL SERVER 2008 (2)

Posible duplicado:
Ayuda con el punto muerto en Sql Server 2008

SQLServer registra automáticamente todos los interbloqueos. ¿Alguien puede ayudarme a obtener la consulta sql que capturará los datos de interbloqueos que se recopilan para un evento reciente?

Estoy usando SQL Server 2008 R2 para mis actividades de desarrollo.

Gracias y saludos, Santosh Kumar Patro


Para capturar gráficos de interbloqueo sin utilizar una traza (no necesita necesariamente el perfilador), puede habilitar la marca de traza 1222. Esto escribirá la información de interbloqueo en el registro de errores. Sin embargo, el registro de errores es textual, por lo que no obtendrá buenas imágenes de gráfico de interbloqueo: tendrá que leer el texto de los bloqueos para resolverlo.

Lo establecería como un indicador de seguimiento de inicio (en cuyo caso deberá reiniciar el servicio). Sin embargo, puede ejecutarlo solo para la instancia de ejecución actual del servicio (que no requerirá un reinicio, pero que no se reanudará en el próximo reinicio) utilizando el siguiente comando de indicador de seguimiento global:

DBCC TRACEON(1222, -1);

Una búsqueda rápida produjo este tutorial:

http://www.mssqltips.com/sqlservertip/2130/finding-sql-server-deadlocks-using-trace-flag-1222/

También tenga en cuenta que si su sistema experimenta una gran cantidad de interbloqueos, esto realmente puede perjudicar su registro de errores, y puede convertirse en un gran ruido, ahogando otros errores importantes.

¿Ha considerado herramientas de supervisión de terceros? SQL Sentry Performance Advisor , por ejemplo, tiene un gráfico de interbloqueo mucho mejor, que le muestra nombres de objeto / índice, así como el orden en que se tomaron los bloqueos. Como beneficio adicional, estos se capturan automáticamente para usted en servidores monitoreados sin tener que configurar indicadores de seguimiento, ejecutar sus propios rastreos, etc.

Descargo de responsabilidad: yo trabajo para SQL Sentry.


Puede usar un deadlock graph y recopilar la información que necesita del archivo de registro.

La única otra forma en que podría sugerir es buscar en la información utilizando EXEC SP_LOCK (que pronto se desaprobará), EXEC SP_WHO2 o la tabla sys.dm_tran_locks .

SELECT L.request_session_id AS SPID, DB_NAME(L.resource_database_id) AS DatabaseName, O.Name AS LockedObjectName, P.object_id AS LockedObjectId, L.resource_type AS LockedResource, L.request_mode AS LockType, ST.text AS SqlStatementText, ES.login_name AS LoginName, ES.host_name AS HostName, TST.is_user_transaction as IsUserTransaction, AT.name as TransactionName, CN.auth_scheme as AuthenticationMethod FROM sys.dm_tran_locks L JOIN sys.partitions P ON P.hobt_id = L.resource_associated_entity_id JOIN sys.objects O ON O.object_id = P.object_id JOIN sys.dm_exec_sessions ES ON ES.session_id = L.request_session_id JOIN sys.dm_tran_session_transactions TST ON ES.session_id = TST.session_id JOIN sys.dm_tran_active_transactions AT ON TST.transaction_id = AT.transaction_id JOIN sys.dm_exec_connections CN ON CN.session_id = ES.session_id CROSS APPLY sys.dm_exec_sql_text(CN.most_recent_sql_handle) AS ST WHERE resource_database_id = db_id() ORDER BY L.request_session_id

http://www.sqlmag.com/article/sql-server-profiler/gathering-deadlock-information-with-deadlock-graph

http://weblogs.sqlteam.com/mladenp/archive/2008/04/29/SQL-Server-2005-Get-full-information-about-transaction-locks.aspx