Recently we had an issue with one of our applications which was connected to a Microsoft SQL Server. It was not working normally and we could initially find any reason for this after following our standard troubleshooting procedures.
Looking at the activity monitor on the SQL Server I could see the application server was trying to update a table but was always being blocked by another session. The blocked session was -2 which does not exist or the SQL Server cannot identify the session owner.
Running the query SELECT DISTINCT 'KILL ''' + CONVERT(VARCHAR(50),request_owner_guid) + ''';' FROM sys.dm_tran_locks WHERE request_session_id = -2 AND resource_database_id =DB_ID('Database Name'); returned the GUID of the Owner of the lock. This was D863D39C-1FFE-4F59-8CDD-F12BFB7062E9.
When I tried to kill that session it returned the error "Only Microsoft Distributed Transaction Coordinator can resolve this transaction. KILL command failed".
As explained here
in Wayne Sheffield's blog by running the program DCOMCNFG it allowed access to the Distributed Transaction Coordinator GUI and from this I could manually abort the transaction.
This removed the lock and allowed the application access to use the table normally. The most likely source of this rogue transaction was another SQL server linked to the SQL server which had not completed normally.