Re: Error during SQL Server restore fails to propagate back to DBI client on Windows

[email protected] (Martin Evans)
Newsgroups perl.dbi.users
Organization Easysoft Limited
Message-ID <[email protected]>
pr wrote:
> Overview:
> 
> Using perl+DBI+DBD::ODBC on Windows, I am connecting to a SQL Server 2005 instance and issuing a "restore database [foo] from disk='c:\foo-backup.bak'".
> 
> The restore attempt appears to succeed, and nothing calls my installed error handler.
> 
> However, if I run a trace on the SQL Server, I can see the restore is throwing an error:
> 
> Error 3224, Severity 16, State 1: Cannot create worker thread.
> RESTORE DATABASE is terminating abnormally.
> 
> If I write the same SQL to a file, then execute the file via sqlcmd, the restore works as expected.  Hence I am confident in the SQL command as well as the backup file.
> 
> Other DML-type commands work as advertised, as does the error handler.  It seems to be something specifically about a restore.
> 
> 
> Specifics:
> 
> The version of perl is ActiveState's v5.10.0 running on a 32 bit Windows 2003 server.
> 
> My DSN and connect code looks like:
> 
> my $dsn = 'Driver={SQL Native Client};Server=myServer;Database=master;Trusted_Connection=yes;Encrypt=yes;';
> my $dbh = DBI->connect("dbi:ODBC:$dsn",'','', { RaiseError => 1, AutoCommit => 1 } );
> $dbh->{HandleError} = \&error_handler;
> 
> My error handler looks like:
> 
> sub error_handler {
>     my @err = @_;
> 
>     print "Error handler triggered!\n";
> 
>     return 0;
> }
> 
> I have tried:
> - $dbh->do ( $restore_command )
> - $sth = $dbh->prepare( $restore_command ); $sth->execute(); ...
> 
> I've tried with and without $dbh->{odbc_exec_direct} = 1 and also not specifying it.
> 
> The MDAC version on the machine is recent: version 2.82.3959.0.
> 
> The version of DBI is 1.604.
> 
> I have tried running a DBI trace at up to level 15, and there doesn't seem to be anything of interest.  
> 
> 
> 
> Has this been brought up before?  Has someone encountered it?  
> 
> If there are other things I should try, I would very much appreciate the suggestions!
> 
> I'm completely at a loss where the problem is.  Code?  DBD?  DBI?  SQL Server?  mdac?
> 
> Thanks
> -rt
> 
> 
> 
> 
> 


Can I see the rest of the code after the prepare please?
Preferably a small self contained and complete example would be best.

Are you calling odbc_more_results after execute until it returns false?

Martin
-- 
Martin J. Evans
Easysoft Limited
http://www.easysoft.com
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.