Hi all,
We have a third-party app used for our daily POS system, it uses a compiled front end against a sql-server db. Not sure what tool the front end was written in, the vendor is cagey about that, but there's no middleware, all the db access is embedded in this compiled front end.
Anyway, at 3AM, when positively nobody is on the system (but screens may be open), I see hundreds of SPID's with open transactions in Activity Monitor (Sql-server 2005).
The Last Batch will show someting like 4:30 PM, and looking at the Details for the spid it will show a call to one of the vendor's stored procs that's basically a SELECT...With(Rowlock).
Like many code-generators, their app has an INS_xxx, UPD_xxx, DEL_xxx, and FET_xxx for every table, where xxx is the table name. The FET procs use "SELECT...FROM xxx With(Rowlock)".
So my question is--would the With(rowlock) hint create an implicit transaction on a Select statement? Or could there be an explicit Begin Tran in their code that I'm not seeing in that last batch? I haven't run a Trace yet, before I do that I just want to know if maybe this is why I see so many open transactions.
Thanks for any insight on this,
--Jim
We have a third-party app used for our daily POS system, it uses a compiled front end against a sql-server db. Not sure what tool the front end was written in, the vendor is cagey about that, but there's no middleware, all the db access is embedded in this compiled front end.
Anyway, at 3AM, when positively nobody is on the system (but screens may be open), I see hundreds of SPID's with open transactions in Activity Monitor (Sql-server 2005).
The Last Batch will show someting like 4:30 PM, and looking at the Details for the spid it will show a call to one of the vendor's stored procs that's basically a SELECT...With(Rowlock).
Like many code-generators, their app has an INS_xxx, UPD_xxx, DEL_xxx, and FET_xxx for every table, where xxx is the table name. The FET procs use "SELECT...FROM xxx With(Rowlock)".
So my question is--would the With(rowlock) hint create an implicit transaction on a Select statement? Or could there be an explicit Begin Tran in their code that I'm not seeing in that last batch? I haven't run a Trace yet, before I do that I just want to know if maybe this is why I see so many open transactions.
Thanks for any insight on this,
--Jim