Set the syb_flush_finish attribute - that should fix the problem.

(the issue being that MS-SQL doesn't handle the ct_cancel() call
correctly) 

Michael

David Sevier writes:
 > Hi!
 > 
 > I've got a strange problem with DBD:Sybase,
 > 
 > We have a program written that goes into our SQL Server box and lists the 
 > active threads so that we can monitor it remotely. For the most part it 
 > works fine. We've used the same script using DBD:ODBC, and DBD:ODBC through 
 > the dbiproxy. We recently got the ability to have our linux box connect with 
 > DBD:Sybase, and while that works much better than the proxy did for multiple 
 > connections, it won't call finish(). The program just hangs. If you don't 
 > call finish() or disconnect, it does the same thing. The only way to end it 
 > is to call disconnect without calling finish(). Now, according to the 
 > cheetah book, that's not supposed to cause any problems, but it's messy, and 
 > gives us an annoying message saying "disconnect invalidates 1 active 
 > statement handle (either destroy statement handles or call finish on them 
 > before disconnecting).
 > 
 > Any ideas on what's wrong here? We don't get this error when we're not using 
 > DBD:Syabse. I suppose we could just disable that message, but, I'd rather 
 > find a way to fix the problem.
 > 
 > Thanks!!
 > 
 > David Sevier
 > 
 > 
 > #!/bin/perl
 > 
 > use DBI;
 > use SQLUtility;
 > use Getopt::Long;
 > 
 > my $connection  = "dbi:Sybase:sdcaecap02";
 > my $username    = "XXXXX";
 > my $password    = "XXXXX";
 > 
 > 
 > &GetOptions("dsn=s"      => \$connection
 >            ,"user=s"     => \$username
 >            ,"password=s" => \$password
 >            );
 > 
 > $Command = "dbcc sqlperf (threads)";
 > 
 > ### Connect to the database
 > my $dbh = connectiontodb($connection,$username,$password);
 > 
 > ### Create a new statement handle to fetch table information
 > my $database_schema=performsqlaction($dbh,$Command);
 > 
 > my $NumberofFields = $database_schema->{NUM_OF_FIELDS};
 > 
 > 
 > ### Iterate through all the tables...
 >   foreach ( my $i = 0; $i < $NumberofFields; $i++) {
 >     my $name = $database_schema->{NAME}->[$i];
 >     printf "%-10s   ",$name ;
 >   }
 >   print "\n";
 > 
 >   foreach (my $i = 0; $i < $NumberofFields; $i++) {
 >     my $name = "=========";
 >     printf "%-10s   ",$name;
 >   }
 >   print "\n";
 > 
 > while (my $hash_ref = $database_schema->fetchrow_hashref() )
 > {
 > 
 > ### Tidy up NULL fields
 >   foreach (my $i = 0; $i < $NumberofFields; $i++)
 >   {
 >     my $name = $database_schema->{NAME}->[$i];
 >     printf "%-10s   ", $hash_ref->{$name} ;
 >   }
 >   print "\n";
 > }
 > $database_schema->finish() or die "Can't finish it!\n";
 > $dbh->disconnect;
 > 
 > exit;
 > _________________________________________________________________
 > Get your FREE download of MSN Explorer at http://explorer.msn.com
 > 

-- 
Michael Peppler - Data Migrations Inc. - [EMAIL PROTECTED]
http://www.mbay.net/~mpeppler - [EMAIL PROTECTED]
International Sybase User Group - http://www.isug.com
Sybase on Linux mailing list: [EMAIL PROTECTED]

Reply via email to