http://www.perlmonks.org?node_id=1014978


in reply to Perl Query Locks A MsSQL Database

Can you do the the same update in your databases' interface directly? Does it lock the table too?

Also you can try to enable tracing in DBI (see section TRACING in DBI), maybe you'll find something interesting in the traces.

Finally it might be a good idea to prepare the update query outside of the loop, and use placeholders.

Replies are listed 'Best First'.
Re^2: Perl Query Locks A MsSQL Database
by EEddieEmm (Initiate) on Jan 23, 2013 at 18:43 UTC

    I can update the database directly. As a matter of of fact, that's how I "get around" the issue at the moment. I read the log and when an update is needed, I'll go into the database with Microsoft SQL Server Management Studio, and make the update with the data from the last log entry. Sucks, but it works.

    Being new to DBI, I didn't know how to do this. You are right, might be worth a look although I know where the problem is. Just don't know why.

    I was thinking along these lines myself. My plan was to alter the code to place the returned data into an array. Then read through that and make updates as needed. The while loop might be keeping the SELECT active somehow - don't know.

      Actually, yes, your $GET_DB_DATA statement handle will be active and maybe MySQLMSSQL prevents other queries from updating the table. I recommend reading all data before trying updates.

      Update: moritz spotted the wrong database

        That was it.

        I put all the data returned from the SELECT query into a 2 dimensional array, processed that and everything went well. Thanks for your help!

        ~Ed