Registriert seit: 9. Jun 2002
453 Beiträge
|
Re: MS SQL Server locked Rows anzeigen / entsperren
5. Jun 2008, 13: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.
|
|
Zitat
|