We've experienced a situation on more than one occasion where a given process on our SQL Server ends up locking 1000-1200 different records and/or pages in a database. The last T-SQL statement that executed was SELECT * FROM vw_ViewName.
That statement was issued from a VB6 application using ADO access techniques and a READONLY recordset. We can find no reason that any locks should be issued since the client-side cursor is a readonly cursor.
Unfortunately, when we try to kill the rogue process, nothing happens, and the process never goes away or lets go of its locks. We end up having to reboot the server to get rid of it.
Question #1: Does this make sense to anyone?
Question #2: Is there a way to issue a SELECT statement so that it performs no locking? The WITH NOLOCK clause doesn't seem to be exactly what I'm after (I don't think).
Question #3: Is there a way to kill the process when it doesn't "want" to be killed. Right-clicking and picking KILL PROCESS has no effect.
That statement was issued from a VB6 application using ADO access techniques and a READONLY recordset. We can find no reason that any locks should be issued since the client-side cursor is a readonly cursor.
Unfortunately, when we try to kill the rogue process, nothing happens, and the process never goes away or lets go of its locks. We end up having to reboot the server to get rid of it.
Question #1: Does this make sense to anyone?
Question #2: Is there a way to issue a SELECT statement so that it performs no locking? The WITH NOLOCK clause doesn't seem to be exactly what I'm after (I don't think).
Question #3: Is there a way to kill the process when it doesn't "want" to be killed. Right-clicking and picking KILL PROCESS has no effect.