Home All Groups Group Topic Archive Search About

SQL Profiler blocks while replaying in the order they were traced

Author
28 Sep 2007 7:14 PM
Paulo Eduardo Neves
I've recorded a SQL Profiler trace file. When I replay it selecting
"in the order they were traced", everything starts fine, but when it
reachs  8%,  the profiler freeze. The interface doesn't respond. I
can't even stop the replay.

With Query Analyzer I run sp_who2, see a process blocked. Killing the
blocking process makes everything run fine again. It freezes twice
before the end, I kill the blocking processes and everything goes
till the end.

If I replay it with multiple threads the problem doesn't occur.
I thought:
  1) If there's a deadlock, after sometime the server should kill one
process and the trace should continue executing.
  2) It should happen more often in the multiple threads execution
since the problem doesn't happen in the production system.

I don't understand this. Can anyone here explain to me what's
happening?

Notes: The "Display replay results" checkbox selection doesn't matter.
I'm using SQL Server 2000.

kind regards,
Paulo

Author
28 Sep 2007 9:57 PM
Erland Sommarskog
Paulo Eduardo Neves (paulone***@gmail.com) writes:
Show quote
> I've recorded a SQL Profiler trace file. When I replay it selecting
> "in the order they were traced", everything starts fine, but when it
> reachs  8%,  the profiler freeze. The interface doesn't respond. I
> can't even stop the replay.
>
> With Query Analyzer I run sp_who2, see a process blocked. Killing the
> blocking process makes everything run fine again. It freezes twice
> before the end, I kill the blocking processes and everything goes
> till the end.
>
> If I replay it with multiple threads the problem doesn't occur.
> I thought:
>   1) If there's a deadlock, after sometime the server should kill one
> process and the trace should continue executing.

I have never played with Profiler replaying, but it sounds that your
trace have multiple spids, and when you replay the trace, one spid
blocks the other. (Unless there is some other activity on the server
that gets in the way.)

Indeed you have a deadlock, but not one that SQL Server will be able
to detect. The spid is blocked, and waiting for another spid up to
clean up its act. But that is not going to happen, because Profiler
is running single-threaded, and thus waiting for the blocked spid to
complete.

>   2) It should happen more often in the multiple threads execution
> since the problem doesn't happen in the production system.

When you run multi-threaded, Profiler does not get blocked, because
presumably Profiler uses one thread per spid, so if one spid gets
blocked by another, the blocking situation gets resolved.



--
Erland Sommarskog, SQL Server MVP, esq***@sommarskog.se

Books Online for SQL Server 2005 at
http://www.microsoft.com/technet/prodtechnol/sql/2005/downloads/books.mspx
Books Online for SQL Server 2000 at
http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx

AddThis Social Bookmark Button