У меня есть простая программа 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