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