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


in reply to Can i execute two queries connecting to same DB at a time.

How would we know without seeing your code?

My guess is that Connection is busy with result means that you still have a statement handle open and did not ->finish() it before trying to issue another SQL statement.

Update: Now, actually reading your title, the answer is "no, not with the DBD you're using, it seems".

Replies are listed 'Best First'.
Re^2: Can i execute two queries connecting to same DB at a time.
by afoken (Chancellor) on May 07, 2009 at 06:50 UTC

    Right. MS SQL Server can handle only one active connection without sacrificing some chickens. This is a limitation of the communication protocol between the ODBC driver and the MS SQL Server, not a DBI or DBD::ODBC limitation, and it is documented in DBD::ODBC::FAQ. Other RDBMS like Oracle and PostgreSQL can handle multiple active connnections via DBI without any problems, at least with their native DBDs, but they should also support them with DBD::ODBC and a recent ODBC driver.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
      Below is the my code my ( $data_source, $user_id, $password ) = qw( PHOENIX DBADMIN DBADMIN ); my $conn_string = "driver={SQL Server};Server=$data_source;Database=$database;UID=$user_id;PWD=$password"; my $dbh = DBI->connect( "DBI:ODBC:$conn_string" ) or die $DBI::errstr; my $sql1 = "SELECT CONTENT_HASH FROM DS_STAGING_CONTENTHASH where STAGING_STATUS_GID!=210"; my $sth = $dbh->prepare( $sql1 ); $sth->execute; In this i executed only one query (above code works fine). But when i try to execute another query by my $sql2 = "SELECT CASESHARE_PATH FROM DS_CASESHARE"; my $sth2 = $dbh->prepare( $sql2 ); $sth2->execute; This gives error as i mentioned above

        What part of Connection is busy with result and my reply:

        you still have a statement handle open and did not ->finish() it before trying to issue another SQL statement
        is giving you problems?

        Your code is opening a second SQL statement before retrieving all results from the first SQL statement. This does not work for your combination of database, OS and DBD.

        Please use <code> tags, this is unreadable. And read what I wrote about the protocol issue just five minutes ago.

        Alexander

        --
        Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
Re^2: Can i execute two queries connecting to same DB at a time.
by bingohighway (Acolyte) on May 07, 2009 at 09:57 UTC
    I have done something similar but I used multithreading. It didn't seem to cause a problem that way.