Re: DBD::ODBC - SQL Server - odbc_err_handler - inconsistent results
From: Chuck Fox (chuckfox2_at_aol.com)
Date: 12/11/03
- Previous message: William R. Mussatto: "2nd post: DBD::ODBC slower than Win32::ODBC"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Thu, 11 Dec 2003 14:19:10 -0500 To: Louise.Mitchell@pnl.gov
Louise,
Louise.Mitchell@pnl.gov wrote:
>All,
>
>Several days ago, I learned how to use the odbc_err_handler subroutine
>provided by DBD::ODBC... in order to capture the 'message' spit out for
>non-DDL/DML commands in a SQL Server, such as 'backup' or 'dbcc'.
>
>The first batch of commands tested were a variety of backup commands and
>then DBCC CHECKDB... and the output was all in the variable, as
>expected...
>
>But then I tested a DBCC INDEXDEFRAG.... in the Query Analyzer it spews
>out some output (not much)... but when I run it thru my process, no
>output is returned...
>
>Anybody have any clues? Code snippet below..
>
>
did you set dbcc traceon( 3604 ) first ? Doesn't appear below. The
traceon ( 3604 ) sends the output to the client, otherwise it falls into
the error log of the server.
>L
>********************
>Snippet for connection:
>
> $dbh_actions = DBI->connect
> ("dbi:ODBC:Driver={SQL
>Server};Server=$action_server;Trusted_Connection=yes;",'','',
> { PrintError => 0,
> RaiseError => 0,
> LongReadLen => 65536,
> odbc_async_exec => 0,
> odbc_err_handler => sub {
> my ($state, $msg) = @_;
> # Strip out all of the driver ID
>stuff
> $msg =~ s/^(\[[\w\s]*\])+//;
> $err_text .= $msg."\n";
> return 0;
> }
> }
> );
>
>Snippet to execute:
>
>sub just_do_it
>{
> my $command = shift;
> my $sth = $dbh_actions->prepare($command);
> my $rc;
> print "** command in sub: $command \n";
>
> if ( $sth )
> {
> $rc = $sth->execute(); # This is the 'do it'.....
> if ( ! $rc ) # Error
> {
> # Save error messages to email
> $err_msgs{"GROUP: $group_name - ITEM: $item_id"} =
> "Command executed:
>$command\n-------------------------------------\nError
>Message:\n$err_text";
> }
> }
> else
> {
> # Save error messages to email
> $err_msgs{"GROUP: $group_id - ITEM: $item_id"} =
> "Command executed:
>$command\n--------------------------------------\nError
>Message:\n$err_text";
> }
>
> print "\nCOMMAND OUTPUT:\n$err_text\n";
> $err_text = '';
> return $rc;
>
>
HTH,
Chuck
- Previous message: William R. Mussatto: "2nd post: DBD::ODBC slower than Win32::ODBC"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]