We have been seeing long wait times at random intervals throughout the day. When we dig into these waits, it always seems they are being caused by an idle blocker (as we have discovered through DPA as well as some extended events.) The problem is, once we realize this has happened, it's already too late. The SPID that was causing the idle blocking is closed and we cannot determine what was running. We have some extended events set up that give us a bit of information about the SPID (such as the call stack, duration, wait_resource, and wait_type) but none of this tells me exactly what stored procedure, query, or other process was running.
Does anyone have a recommended way to store all information about past SPIDs, or any other advice on how to deal with this going forward? At this point, I'm not worried about necessarily finding out what's happened in the past (though that is welcomed as well,) but how to get this information stored going forward so I can refer back to it.