2012-08-29 3 views
0

Perl을 사용하여 SQL Server 데이터베이스를 원격으로 백업하려고합니다. 그러나 어떻게 든 다음과 같은 오류가 발생하는 :Perl에서 SQL Server 백업 명령

백업 오류 : 3041, 심각도 : 16, 상태 : 1. BACKUP 명령을 완료하지 못했습니다. 자세한 메시지는 백업 응용 프로그램 로그를 확인하십시오. 원격 서버에 등 데이터베이스 쿼리 데이터베이스를 만들 같은 스크립트가 수 사용

use DBI; 
my $dsn = 'DBI:ODBC:Driver={SQL Server}'; 
my $host = 'hostname'; 
my $database = 'dbname'; 
my $user = 'sa'; 
my $auth = 'xxxxxxx'; 

my $dbh = DBI->connect("$dsn;Server=$host", 
         $user, 
         $auth, 
         { RaiseError => 1, 
         AutoCommit => 1} 
        ) || die "Database connection not made: $DBI::errstr"; 

my $sql = "BACKUP DATABASE testdb TO DISK='d:\sql_share\backup.bak'"; 
my $sth = $dbh->prepare($sql); 

$sth->execute(); 
print "\nexecuted"; 

$sth->finish(); 
$dbh->disconnect(); 

: 같은

스크립트 보인다.

+0

임베디드 허용하는 대신이를 사용하는 것이 좋습니다? –

답변

0

\ 큰 따옴표 안에있는 의미입니다. 백 슬래시를 탈출하십시오. 명령에

0

백 슬래시는 이중 인용 맥락에서 처리하고,

my $sql = "BACKUP DATABASE testdb TO DISK='d:\sql_share\backup.bak'"; 

세트 BACKUP DATABASE testdb TO DISK='d:sql_shareackup.bak'$sql되고있다.

을보고 그것을 밖으로 인쇄 내가 단일 인용 컨텍스트를 제공하고 "자세한 메시지 백업 응용 프로그램 로그를 확인하십시오"나요 따옴표

my $sql = q(BACKUP DATABASE testdb TO DISK='D:\sql_share\backup.bak'); 
+0

SQL 서버 로그에서도 여전히 동일한 오류가 발생합니다. – user762421

+0

OK 백업 로그 (서버 로그가 아닌 _)에서 무엇을 말합니까 – Borodin

+0

SQL Server Management Studio Express에서 동일하게 작동합니다 – user762421