Ho un gestionale, non scritto da me, che a volte mi da problemi strani sui lock.
I lock vengono fatti con la tecnica dell'update fantasma con successivo rollback etc..
Mi chiadevo, esiste un sistema per recuperare in un bel elenco contenete tutte le transazioni non ancora committate?
Mi piacerebbe che questo elenco contenesse la tabella con il lock... ma soprattutto il record!
Io attualmente faccio questo:
select * from (select request_session_id as id_processo_sql, resource_database_id as id_database,object_name(resource_associated_entity _id) as 'nome_tabella' from sys.dm_tran_locks where resource_type = 'OBJECT' and request_mode = 'IX' and resource_database_id = (select dbid from master.dbo.sysdatabases where name = 'il_nome_del_mio_db')) as t1
join (select spid as id_processo_sql, loginame as nome_utente, hostprocess as id_processo_exe,last_batch as ora_inizio, sql_handle as handle_sql from sys.sysprocesses where spid IN (select request_session_id from sys.dm_tran_locks where resource_type = 'PAGE' and request_mode = 'IX' and resource_database_id = (select dbid from master.dbo.sysdatabases where name = 'il_nome_del_mio_db'))
) as t2 on t1.id_processo_sql = t2.id_processo_sql
Pero' purtroppo non so qual'e' il record lockato... ma solo la tabella.
Grazie a chi sapra' e vorra' rispondermi.
Ciao.

Rispondi quotando
agina:rid