SQL Server Backup Tool

09/07/2015 08:59 Memphiisto#1
Hallo Leute :) :D

Ich habe mir für die Firma selber ein kleines Backuptool für den SQL Server gebastelt, welches ganz einfach in die Aufgabenplanung eingegeben wird und dann kann man es alles automatisch laufen lassen.

Gerade vor ca 2 Wochen lief noch alles ganz normal, nun musste ich aber Autoit kurzzeitig deinstallieren und wieder installieren. Wenn ich nun das Script wieder Compile bekomme ich immer eine Fehlermeldung mit "The requested action with this object has failed." nur dass es mir Lustigerweise natürlich jedes mal eine andere Zeile anzeigt wie wenn es selber nicht wüsste wo der Fehler ist...


Bin nun schon seit einiger Zeit am suchen aber ich finde meinen Fehler einfach nicht kann mir da mal bitte jemand darüber schauen ?
Script kann auch gerne von anderen verwendet werden wenn es jemand gerne haben möchte.


Hier das Script:
PHP Code:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Version=Beta
#AutoIt3Wrapper_Icon=Icon\Sicherung.ico
#AutoIt3Wrapper_Res_Language=3079
#AutoIt3Wrapper_Run_Tidy=y
#Tidy_Parameters=/rel /reel /sf /tc n
#AutoIt3Wrapper_Run_Au3Stripper=y
#Au3Stripper_Parameters=/so /mi
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Global $adCN
$date 
= @MDAY "." & @MON "." & @YEAR
$sDriver 
"{SQL Server}" ; <== Auswahl des Treibers
$adCN 
ObjCreate("ADODB.Connection") ; <== SQL Verbindung erstellen

;###################################;
;Inidatei Überprüfen und Daten sichern;
;
##################################;
If Not FileExists(@WorkingDir "\Settings.ini"Then
    MsgBox
(1"First Start""This is your first start of the SQL Backuptool." & @CRLF & @CRLF "Please enter the following Data")
    
$FC_sql_server InputBox("Insert Server Name""Please Enter the SQL Servername/IPAdress") ; <== SQL Server Name
    $FC_sql_db 
InputBox("Insert Database Name""Please Enter the SQL Database Name") ; <== SQL Datenbank Name
    $FC_sql_user 
InputBox("Insert SQL User""Please Enter the SQL User") ; <== SQL Benutzer
    $FC_sql_pass 
InputBox("Insert SQL-User Password""Please Enter the SQL-User Password") ; <== SQL Benutzer Passwort
    $FC_savedir 
InputBox("Insert Savedir""Please Enter the Path where the Database should be saved to.") ; <== Speicher Ort der .bak Datei
    IniWrite
(@WorkingDir "\Settings.ini""Connectiondata""Servername"$FC_sql_server)
    
IniWrite(@WorkingDir "\Settings.ini""Connectiondata""SQL Database"$FC_sql_db)
    
IniWrite(@WorkingDir "\Settings.ini""Connectiondata""User"$FC_sql_user)
    
IniWrite(@WorkingDir "\Settings.ini""Connectiondata""User PW"$FC_sql_pass)
    
IniWrite(@WorkingDir "\Settings.ini""Connectiondata""SaveDir"$FC_savedir)

    
$eBackup MsgBox(4"Backup?""Soll sofort ein erstes Backup erstellt werden?")
    If 
$eBackup 6 Then
        _Sichern
()
    Else
        Exit
    EndIf

Else

    
_Sichern()

EndIf

Func _Sichern()
    ;
###################################;
    
;Sicherungsordner erstellen;
    ;
##################################;

    
$BAKDir IniRead(@WorkingDir "\Settings.ini""Connectiondata""Savedir""Default")

    If 
Not FileExists($BAKDir "\Sicherung"Then
        DirCreate
($BAKDir "\Sicherung")
    EndIf

    If 
Not FileExists($BAKDir "\Sicherung\Reporting"Then
        DirCreate
($BAKDir "\Sicherung\Reporting")
    EndIf

    ;
###################################;
    
;Serververbindungsdaten Festlegen;
    ;
##################################;

    
$sql_server IniRead(@WorkingDir "\Settings.ini""Connectiondata""Servername""Default")
    
$sql_db IniRead(@WorkingDir "\Settings.ini""Connectiondata""SQL Database""Default")
    
$sql_user IniRead(@WorkingDir "\Settings.ini""Connectiondata""User""Default")
    
$sql_pass IniRead(@WorkingDir "\Settings.ini""Connectiondata""User PW""Default")

    ;
###################################;
    
;Verbindung herstellen und sichern;
    ;
##################################;
    
$DSN = ("DRIVER=" $sDriver ";SERVER=" $sql_server ";DATABASE=" $sql_db ";uid=" $sql_user ";pwd=" $sql_pass ";") ; <== DSN Definieren
    $adCN
.open($DSN) ; <== Mit Daten eine Verbindung öffnen

    
If @error Then
        MsgBox
(0"ERROR""Failed to connect to the database")
        Exit
    Else
        
$RecSet ObjCreate("ADODB.RecordSet") ; <== Record erzeugen
        TrayTip
("Info""Backup in process."10)
        
$RecSet.open("BACKUP DATABASE [" $sql_db "] TO  DISK = N'" $BAKDir "\Sicherung\Kplus_Daten-Sicherung_" $date ".bak' WITH NOFORMAT, NOINIT,  NAME = N'Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10 "$adCN)
        
$RecSet.close
        $adCN
.close
        TrayTip
("Info""Backup completed."10)
        
Sleep(5000)
    EndIf
EndFunc   ;==>_Sichern 

Vielen dank im Vorraus :):D

Lg MagicDave
09/07/2015 11:47 alpines#2
Spontan würde ich mal auf das ADODB Objekt tippen weil es hier wohl das einzige Objekt im Script ist.
Poste doch mal die verschiedenen Fehler, vielleicht kriegt der ja keine Verbindung hin und deswegen crasht es.

Alternativ kannst du ja die SQLite UDF nehmen wenn es kompatibel ist.
09/07/2015 15:06 Memphiisto#3
Habe den Fehler nun gefunden :)

Ich hatte wie es aussieht eine alte und eine neue Version miteinander vermischt und so sind Fehler entstanden..
Falls es jemanden interessiert was es genau oder wenn jemand den funktionierenden Code möchte.. einfach melden :)


LG Magic