database - SQL Server backup command fails via Perl/DBI but works via DOS> SqlCmd. Why? -


i have simple perl/dbi program backup sql server databases. program runs cleanly, produces no errors, supposedly creates database backups, backup files not exist!

when execute following command via dbi,

backup database dz disk='c:\sqlbackups\dz.perl' init 

no backup file created. perl , sql report "processed x pages database 'y',
backup file not appear when execute dos> dir

when execute similiar command via sqlcmd,

backup database dz disk='c:\sqlbackups\dz.sqlcmd' init 

a backup file created.

i'm running activestate perl version perl 5, version 16, subversion 1 (v5.16.1) built mswin32-x64-multi-thread on microsoft windows 7 professional build 6.1 (build 7601; service pack 1)

here's program

#!perl -w #test making database backups via perl dbi    #preparations     use strict;  #require variable declaration      use dbi;      #database interface     $dbhandle = dbi->connect("dbi:odbc:driver={sql server};server=davidzokaites")  or die;     $dbhandle->{tracelevel} = "15|all";    #get maximum debugging information    #loop on databases need dump      foreach $dbname (  qw < dz master model msdb my_test > )      {         #dbi method runs creates no dumps           $query = "backup database $dbname disk='c:\\sqlbackups\\$dbname.perl' init";         print $query, "\n";          warn "\n$dbname\n";         $dbhandle->do ($query)  or die;           #sqlcmd works          $query = "backup database $dbname disk='c:\\sqlbackups\\$dbname.sqlcmd' init";         print $query, "\n";          $syscmd = "sqlcmd -s davidzokaites -q \"$query\" >> testdbi.sqlcmd.out";         system ($syscmd) == 0             or die "unable execute $syscmd \n";      }  

and here's bit of dbi stderr tracing

    dbi::db=hash(0x297ba10) trace level set 0x7f0fff00/15 (dbi @ 0x0/0) in dbi 1.622-ithread (pid 7712)  master     !! info: '' cleared call method     -> dbd::odbc::db (dbi::db=hash(0x297bae8)~0x297ba10 'backup database master disk='c:\sqlbackups\master.perl' init') thr#1d97e8     >> store         dispatch (dbi::db=hash(0x297ba10) rc1/2 @3 g2 ima41c pid#7712) @ c:/perl64/site/lib/dbd/odbc.pm line 424 via  @ c:\david\dobackup\testdbi.pl line 20 1    -> store dbd::odbc::db (dbi::db=hash(0x297ba10)~inner 'statement' 'backup database master disk='c:\sqlbackups\master.perl' init') thr#1d97e8     !!dbd::odbc unsupported attribute passed (statement)     store dbi::db=hash(0x297ba10) 'statement' => 'backup database master disk='c:\sqlbackups\master.perl' init' 1    <- store= ( 1 ) [1 items] @ c:/perl64/site/lib/dbd/odbc.pm line 424 via  @ c:\david\dobackup\testdbi.pl line 20     sqlexecdirect backup database master disk='c:\sqlbackups\master.perl' init     processing non utf8 sql in unicode mode     sqlexecdirect = 1     !!dbd_error2(err_rc=1, what=execute immediate success info, handles=(26bd70,2699f00,29cd080)     !sqlerror(26bd70,2699f00,29cd080) = (01000, 4035, [microsoft][odbc sql server driver][sql server]processed 1376 pages database 'master', file 'master' on file 1.)     !! info: '' '[microsoft][odbc sql server driver][sql server]processed 1376 pages database 'master', file 'master' on file 1. (sql-01000)' (err#0)     <- do= ( -1 ) [1 items] @ c:\david\dobackup\testdbi.pl line 20 

you need read why backup/restore/some_other_procedure in ms sql server not complete?. command/procedure can output print messages when using "do" method not complete. use prepare/execute , odbc_more_results.


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -