Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

MS SQL Wartungs Batch

Frage Entwicklung Datenbanken

Mitglied: yearzero

yearzero (Level 1) - Jetzt verbinden

16.02.2010, aktualisiert 17:35 Uhr, 3130 Aufrufe, 2 Kommentare

Hallo zusammen


Ich habe versucht einen Batch zu schreiben der die Wartung userer SQL Datenbank vereinfacht. (verwendete SW: SQL Server Management Studio Express 2005)
Ziel ist es folgende Scripts in einem Batch zusammenzufassen:
DBCC CHECKDB
REORGANIZEINDEX --> Script von MSDN zum identifizieren von Indexen welche fragmentiert sind und defragmentiert diese
DBCC SHRINKDATABASE

Da aber im Batch unterbrochen werden soll, wenn ein Fehler autaucht, habe ich versucht mit if %errorlevel%==0 das Script zu unterbrechen
Das ganze wird dann in einem log file gespeichert.

Da ich jedoch nicht so eine grosse Ahnung von Batch Files und SQL habe, habe ich keine Ahnung ob das ganze so einen Sinn macht oder ob es bessere Varianten gibt.
Der Batch funktioniert zwar und auch das Log wird wie gewünscht erstellt, jedoch habe ich keine Ahnung was passieren würde, wenn ein Fehler in einem der Scripts passieren würde.

Batch File:

01.
@echo on 
02.
REM Wartung der DB Spirateam 
03.
 
04.
cd /d D:\xxx\App\3pa\MsSqlDbms\Maintenance 
05.
 
06.
del SpiraTeamDB_Maintenance.txt.temp 
07.
rename SpiraTeamDB_Maintenance.txt SpiraTeamDB_Maintenance.txt.temp 
08.
 
09.
 
10.
echo ***************************SQL Spirateam Check1*************************** >> D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Maintenance.txt 
11.
"D:\xxx\App\3pa\MsSqlDbms\90\Tools\Binn\SQLCMD.EXE" -S.\SQLExpress -i D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Check.sql -V 1 >> D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Maintenance.txt 
12.
 
13.
if %errorlevel%==0 ( 
14.
	echo ***************************SQL Spirateam ReorganizeIndex*************************** >> D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Maintenance.txt 
15.
	"D:\xxx\App\3pa\MsSqlDbms\90\Tools\Binn\SQLCMD.EXE" -S.\SQLExpress -i D:\xxx\App\3pa\MsSqlDbms\Maintenance\ReorganizeIndex.sql -V 1 >> D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Maintenance.txt 
16.
) else ( 
17.
	pause 
18.
 
19.
20.
 
21.
if %errorlevel%==0 ( 
22.
	echo ***************************SQL Spirateam Shrink*************************** >> D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Maintenance.txt 
23.
	"D:\xxx\App\3pa\MsSqlDbms\90\Tools\Binn\SQLCMD.EXE" -S.\SQLExpress -i D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Shrink.sql -V 1 >> D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Maintenance.txt 
24.
) else ( 
25.
	pause 
26.
 
27.
28.
 
29.
 
30.
if %errorlevel%==0 ( 
31.
	echo ***************************SQL Spirateam Check2*************************** >> D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Maintenance.txt 
32.
	"D:\xxx\App\3pa\MsSqlDbms\90\Tools\Binn\SQLCMD.EXE" -S.\SQLExpress -i D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Check.sql -V 1 >> D:\xxx\App\3pa\MsSqlDbms\Maintenance\SpiraTeamDB_Maintenance.txt 
33.
) else ( 
34.
	pause 
35.
 
36.
37.
 
38.
Pause
[Edit Biber] Codeformatierung [/Edit]
Mitglied: Biber
16.02.2010 um 19:37 Uhr
Moin yearzero,

willkommen im Forum.
Da aber im Batch unterbrochen werden soll, wenn ein Fehler autaucht, habe ich versucht mit if %errorlevel%==0 das Script zu unterbrechen

Okay.........

Ja.......

Das klappt ja, aber.....

?? Ist das denn der ganze Plan?
Oder anders gefragt...
Ein Batch/Skriptablauf ist ja eigentlich nur sinnvoll, wenn sich dadurch etwas automatisieren lässt.
Und alle Erfolgs/Fehlerfälle irgendwie zu einem weiteren Prozess-Ablauf linksrum oder rechtsrum führen.
"alle Fälle" natürlich in der Bedeutung von "alle Fälle, an die ich beim Skripten gedacht habe".

Wenn du einen Schönwetterbatch schreibst wie oben, der -sollte kein Fehler auftreten- anstandslos jede Nacht um 03:34h automatish gestartet wird und sich im 03:37 wieder schlafen legt....okay.

Wenn aber die einzige Reaktion auf einen Fehler ist (so wie oben), dass morgens wenn die Putzfrau kommt irgendwo auf einem der Bildschirme ein "bitte beliebige Taste drücken" leuchtet...

Hmm.. dieser Plan hat noch Potentiale.

-> In das Log MUSS geschrieben werden, wenn es klappt, ja. Aber erst recht, wenn es nicht klappt und der Rest abgebrochen wurde.

-> Wenn der Batch nicht "allein" auf einen Fehler reagieren kann, sondern mit PAUSE warten muss, bis ein beherztes Admin-Wesen Strg-C drückt oder den Netzstecker zieht...

Dann wartet noch mit dem Skripten und sortiert/diskutiert erstmal, ob und was da automatisierbar ist.

[Ist nicht gehässig, sondern durchaus konstruktiv gemeint!]

Grüße
Biber
Bitte warten ..
Mitglied: yearzero
17.02.2010 um 08:25 Uhr
Vielen Dank für die Antwort

Was deine Kritik angeht, hast du absolut recht. Es braucht immer noch irgendjemand der Anwesend ist wenn das Script läuft.

Es ist jedoch so, dass wir bis jetzt immer einmal im moment jedes dieser SQL Scripts einzeln ausgeführt haben um die DB zu warten. Dies benötigte auch einen Admin und brauchte auch mehr Zeit.
Ziel dieses Batches ist es, dass der Admin nur noch den Batch ausführen kann, statt jedes Script einzeln.
Aber langsam frage ich mich ob es wirklich Sinnvol ist so.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Datenbanken
MS-SQL-Server + T-SQL+Batch (4)

Frage von kallewirsch zum Thema Datenbanken ...

Datenbanken
gelöst Täglicher Export einer View aus MS SQL 2008 in Excel oder CSV (9)

Frage von Arafat zum Thema Datenbanken ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (13)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...