Einzelnen Beitrag anzeigen

Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#3

Re: MS SQL Server locked Rows anzeigen / entsperren

  Alt 5. Jun 2008, 12:52
Hey Shima,
danke für deine Antwort. Ich nutze die Express Version des Studios. Da scheint es leider keinen "Activity Monitor" zu geben.

Ich habe es aber mittlerweile hinbekommen die Locks aus den Systemtabellen auszulesen und mit "Kill" zu beenden. Das ganze könnte auch für andere User interessant sein:

SQL-Code:
-- Locks indentifizieren --------------------------------------------------------------------------------
SELECT L.request_session_id AS SPID, -- System Process Identifier
  request_owner_guid AS UOW, -- Identifiziert die Arbeitseinheits-ID (Unit of Work, UOW) verteilter Transaktionen
  DB_NAME(L.resource_database_id) AS DatabaseName, -- Databasename
  O.Name AS LockedObjectName, -- Object name
  P.object_id AS LockedObjectId, -- Eindeutige Object identification number
  L.resource_type AS LockedResource, -- Resource which is locked: DATABASE, FILE, OBJECT, PAGE, KEY, EXTENT, RID, APPLICATION, METADATA, HOBT, ALLOCATION_UNIT.
  L.request_mode AS LockType, -- Lock Type: Exclusive locks (X), Intent locks (I), Shared locks (S), Update locks (U), Schema locks (Sch)
  --L.resource_description AS LockDescription, -- LockDescription
  ST.text AS SqlStatementText, -- SQL Statement
  ES.login_name AS LoginName, -- Loginname mit dem der User an der DB angemeldet ist
  ES.host_name AS HostName, -- Hostname des verbunden clients
  TST.is_user_transaction as IsUserTransaction, -- 1 = Die Transaktion wurde von einer Benutzeranforderung initiiert. 0 = Systemtransaktion.
  AT.name as TransactionName, -- Transaktionsname
  AT.transaction_begin_time as TransactionStartTime,-- Uhrzeit des Transaktionsbeginns.
  CN.auth_scheme as AuthenticationMethod -- Login Mehode SQL / Windows authentifizierung
FROM sys.dm_tran_locks L
  left JOIN sys.partitions P ON P.hobt_id = L.resource_associated_entity_id
  left JOIN sys.objects O ON O.object_id = P.object_id
  left JOIN sys.dm_exec_sessions ES ON ES.session_id = L.request_session_id
  left JOIN sys.dm_tran_session_transactions TST ON ES.session_id = TST.session_id
  left JOIN sys.dm_tran_active_transactions AT ON TST.transaction_id = AT.transaction_id
  left 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('DB_ProjectPoint')
      and L.request_mode in ('X', 'IX') -- Exklusive Locks
ORDER BY L.request_session_id

-- Info
-- Lock Types: [url]http://www.sqlteam.com/article/introduction-to-locking-in-sql-server[/url]
-- Dead Lock Information: [url]http://weblogs.sqlteam.com/mladenp/category/223.aspx/rss[/url]


-- Locks aufheben --------------------------------------------------------------------------------
--KILL 108; -- Kill SPID Process id XYZ. Release the Dataset.
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat