2013-04-19 3 views
0

У меня есть простая программа Perl/DBI для резервного копирования баз данных SQL Server. Программа работает чисто, не производит ошибок, предположительно создает резервные копии баз данных, но резервных файлов не существует!Команда резервного копирования SQL Server выходит из строя через Perl/DBI, но работает через DOS> SqlCmd. Зачем?

Когда я выполнить следующую команду с помощью DBI,

backup database dz to disk='C:\SqlBackups\dz.perl' with init 

Нет архивный файл не создается. Perl и отчет SQL «Плавленый х страниц для базы данных„у“,
но архивный файл не появляется, когда я исполняю DOS> реж

Когда я выполнить похожую команду через Sqlcmd,

backup database dz to disk='C:\SqlBackups\dz.sqlcmd' with init 

резервный файл создается.

Я бегу ActiveState Perl версии Это Perl 5, версия 16, подрывная 1 (v5.16.1), построенный для MSWin32-x64-многопоточной на Microsoft Windows 7 Professional сборки 6.1 (Build 7601; Service Pa ск 1)

Вот Программа

#!perl -w 
#Test making database backups via Perl DBI 


#preparations 
    use strict; #require variable declaration 
    use DBI;  #database interface 
    my $dbHandle = DBI->connect("dbi:ODBC:Driver={SQL Server};Server=DavidZokaites") or die; 
    $dbHandle->{TraceLevel} = "15|ALL"; #get maximum debugging information 


#loop over all databases that need a dump 
    foreach my $dbName ( qw < dz master model msdb my_test >) 
    { 
     #DBI method that runs but creates no dumps 
     my $query = "backup database $dbName to disk='C:\\SqlBackups\\$dbName.perl' with init"; 
     print $query, "\n"; 
     warn "\n$dbName\n"; 
     $dbHandle->do ($query) or die; 

     #SQLCMD that works 
     $query = "backup database $dbName to disk='C:\\SqlBackups\\$dbName.sqlcmd' with init"; 
     print $query, "\n"; 
     my $sysCmd = "SqlCmd -S DavidZokaites -Q \"$query\" >> TestDbi.sqlcmd.out"; 
     system ($sysCmd) == 0 
      or die "Unable to execute $sysCmd \n"; 
    } 

А вот немного из DBI Stderr трассировки

DBI::db=HASH(0x297ba10) trace level set to 0x7f0fff00/15 (DBI @ 0x0/0) in DBI 1.622-ithread (pid 7712) 

master 
    !! info: '' CLEARED by call to do method 
    -> do for DBD::ODBC::db (DBI::db=HASH(0x297bae8)~0x297ba10 'backup database master to disk='C:\SqlBackups\master.perl' with init') thr#1d97e8 
    >> STORE   DISPATCH (DBI::db=HASH(0x297ba10) rc1/2 @3 g2 ima41c pid#7712) at C:/Perl64/site/lib/DBD/ODBC.pm line 424 via at C:\David\DoBackup\TestDbi.pl line 20 
1 -> STORE for DBD::ODBC::db (DBI::db=HASH(0x297ba10)~INNER 'Statement' 'backup database master to disk='C:\SqlBackups\master.perl' with init') thr#1d97e8 
    !!DBD::ODBC unsupported attribute passed (Statement) 
    STORE DBI::db=HASH(0x297ba10) 'Statement' => 'backup database master to disk='C:\SqlBackups\master.perl' with init' 
1 <- STORE= (1) [1 items] at C:/Perl64/site/lib/DBD/ODBC.pm line 424 via at C:\David\DoBackup\TestDbi.pl line 20 
    SQLExecDirect backup database master to disk='C:\SqlBackups\master.perl' with init 
    Processing non utf8 sql in unicode mode 
    SQLExecDirect = 1 
    !!dbd_error2(err_rc=1, what=Execute immediate success with info, handles=(26bd70,2699f00,29cd080) 
    !SQLError(26bd70,2699f00,29cd080) = (01000, 4035, [Microsoft][ODBC SQL Server Driver][SQL Server]Processed 1376 pages for database 'master', file 'master' on file 1.) 
    !! info: '' '[Microsoft][ODBC SQL Server Driver][SQL Server]Processed 1376 pages for database 'master', file 'master' on file 1. (SQL-01000)' (err#0) 
    <- do= (-1) [1 items] at C:\David\DoBackup\TestDbi.pl line 20 

ответ