In regards to the buffering, in Sybase and MS there is a set command SET FLUSHMESSAGE ON, that will force the buffers to flush from OpenClient to the OS.
HTH,
Chuck Fox
[EMAIL PROTECTED] wrote:
On Sat, Sep 13, 2003 at 01:08:27PM -0400, Jeff Urlwin <[EMAIL PROTECTED]> wrote:
Is there a way to execute an SQL command and get the messages, not the records?Buried in the DBD::ODBC t/20SqlServer.t is an example. You need to set an
I mean, I'd like to run
DBCC CHECKDB ('databasename')
parse the output and add the result to a daily report of my servers' health. The question is how do I get the messages.
I'm using DBI+DBD::ODBC and MS SQL Server 2000.
error handler and set odbc_async_exec. In there is the snippet that calls
"dbcc TRACESTATUS(-1)" which runs during the tests (the safest thing I think
I could find to run on generic tests, but I believe DBCC
CHECKDB('databasename') was the reason the original patches were submitted
by David L. Good and included by me... The only "clear" documentation is in
the Changes file. The Changes file also points to a specific file which
calls checkdb...
You don't really need to set odbc_async_exec unless you need to get the messages as soon as possible after they are generated. In my case, I wanted to be able to send an alert as soon as my program saw a DBCC error but still let the DBCC continue. Unfortunately, it seems that ODBC buffers the output, so even with odbc_async_exec set you get the messages in chunks, so an error could sit in a buffer for quite some time (say, while a really large table is being DBCC'd) before you'll see it.
use strict;
use DBI;
sub err_handler { my ($state, $msg) = @_; # Strip out all of the driver ID stuff $msg =~ s/^(\[[\w\s]*\])+//; print "===> state: $state msg: $msg\n"; return 0; }
my $dbh = DBI->connect("dbi:ODBC:PERL_TEST_SQLSERVER", $ENV{DBI_USER}, $ENV{DBI_PASS}) || die "Can't connect: $DBI::errstr\n";
$dbh->{odbc_err_handler} = \&err_handler; $dbh->{odbc_async_exec} = 1; print "odbc_async_exec is: $dbh->{odbc_async_exec}\n";
my $sth; $sth = $dbh->prepare("dbcc checkdb(model)") || die $dbh->errstr; $sth->execute || die $dbh->errstr; $sth->finish; $dbh->disconnect;
Regards,
Jeff
Thanks, Jenda
(And sorry if it's on line XX of the fine manual and I just did not find it:) ===== [EMAIL PROTECTED] === http://Jenda.Krynicky.cz ===== When it comes > to wine, women and song, wizards are allowed to get drunk and croon as much as they like.
-- Terry Pratchett in Sourcery