15. juli 2008 - 13:33Der er
7 kommentarer og 1 løsning
DBI - BACKUP DATABASE rapporterer ikke fejl??
Jeg har et script der tager backup, men det fanger ikke fejl fra MS SQL. Scriptet melder OK, men via SQL Server Logs kan man se at nogle backups fejler. Og det er tilfældigt hvilke og hvornår de fejler. (Og har ikke noget med pladsproblemer at gøre)
Her er den teknik jeg p.t. bruger: my $sql = qq{ BACKUP DATABASE "$database->{database}" TO DISK = '$local_filename' WITH NAME = N'$database->{database} backup', INIT, NOSKIP, NOFORMAT }; my $rows = $dbh->do($sql) or die $dbh->errstr; if ($dbh->err || ($rows!=-1)) { print "\tERRSTR: " . $dbh->errstr . "\n"; } else { print "\tDET GIK FINT!\n"; }
Men som sagt, så fejler nogle backups uden at denne kode opdager det.
Jeg har siddet og kigget på: $dbh->{odbc_err_handler} = \&sql_err_handler; $dbh->{odbc_exec_direct} = 1; Men jeg kan ikke få det til at fungere.
JEG VIL JO BARE HAVE EN INDIKATION FOR OM BACKUP'en GIK GODT ELLER EJ. (Ja, okay, hvis det er en teknik der er bedre så der aldrig sker fejl, så ville det jo selvfølgelig være bedre!)
Opnå den bedste ydeevne med din computer, og overtag føringen i de nyeste spil uden at gå over budgettet.
30. oktober 2024
Slettet bruger
15. juli 2008 - 13:43#1
hvad med denne
my $rows = $dbh->do($sql) or die $dbh->errstr;
hvis af en eller anden grund $dbh->errstr er tom så ser du ikke noget.
Måske en ide hvis du smider en eval uden om den så du kan fange den die og derved levere en pæn afsnitning af dit program. Det er generelt en god ide at anvende eval.
Jeg har prøvet at udskrive 'err', 'errstr' og et par andre feedbacks på DBH, men der er hverken noget i dem når det går godt eller når det går skidt... Og den dør iøvrigt aldrig, så en eval er ikke relevant for det aktuelle problem.
Synes godt om
Slettet bruger
15. juli 2008 - 15:37#3
så prøb at sætte nogle warn "blah" ind rundt omkring (eller noget som skriver til en fil) for at se om de enkelte ting faktisk går godt, hvordan kan du være sikker på at den ikke dør?
Jeg har faktisk allerede en eval, jeg tog den bare ikke med, da jeg ikke synes det er vigtigt - og derfor ved jeg at den aldrig dør, den logger til nogle flade filer.
Andre gode forslag?
Synes godt om
Slettet bruger
17. juli 2008 - 10:21#5
ikke andet end at du manuelt forsøger at få programmet til at dø rundt omkrign for at se om den behandler det korrekt.
Det er jo heller ikke til at sige hvad der skal rettes når man ikke kan se hele programmet.
Jeg har bare på fornemmelsen at det ikke vil føre nogen vejne, medmindre man begynder at ændre i koden i DBI modulet.
Jeg har på fornemmelsen at ->do() bare ikke er ordentlig implementeret til at returnere den slags "ikke tabel tekst" som kommer retur fra SQL serveren?
Er der nogle der har info om den idé ?
Synes godt om
Slettet bruger
17. juli 2008 - 17:42#7
jeg tror nu nok at de folk som har lavet DBI ved hvad de gør, men jeg er slet ikke klar over hvad det er du forsøger at lave.
Men ok det er MS SQL og supporten til denne kunne tænkes at halte, anvender selv MySQL
Hvis der er nogle der kommer i tanke om en måde hvorpå man via Perl kan starte SQL jobs, og med sikkerhed få feedback om det er fået godt, så vil jeg gerne vide det...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.