none
Script für Aufgabenplanung Windows RRS feed

  • Frage

  • Hallo,

    vielleicht kann mir jemand weiter helfen. Ich würde sehr gerne über die Windows Aufgabenplanung 2 Scripte laufen lassen um

    1. Bilder einer Datenbank zu bereinigen (1x monatl. am Wochenende Nacht)

    2.SQL-Transaktionsprotokolle verkleinern (1x monatl. am Wochenende Nacht)

    leider bin ich noch sehr am Anfang meiner SQL Kentnisse. Ich habe hier einen SQL Server 2016 Express und über die Aufgabenplanung im SQL Server Management Studio ist die Erstellung nur für einmalig auswählbar. Daher war mein Gedankengang ob es dazu vielleicht PowerShell Befehle gibt die, die selbe Funktion haben und dann über die Microsoft Aufgabenplanung ausgeführt werden können.

    Es wäre sehr nett, wenn mir jemand dabei weiterhelfen könnte oder 2 solche Scripte zur Verfügung stellen könnte, danke

    Mittwoch, 26. Juni 2019 11:02

Antworten

Alle Antworten

  • Per Management Studio erstellst du die Aufgabe natürlch nur einmal in die Aufgabenplanung.
    Der Ausführungsplan wiederum bestimmt, wie oft diese Aufgabe denn wiederholt durchgeführt werden soll.

    Rufe die Aufgabenplanung auf um die Häufigkeit des Planungsentrages ggf. anzupassen.

    Mittwoch, 26. Juni 2019 12:58
  • Hallo Andreas,

    den zweiten Punkt solltest Du direkt wieder vergessen. Was macht es für Sinn, diese Dateien regelmäßig zu verkleinern, wenn du doch den Platz freihalten musst, damit sie wieder wachsen können. Du erzeugst damit nur unnötige Last und Fragmentierung der Festplatten.

    Transaktionsprotokolle kann man verkleinern, wenn sie mal total aus dem Ruder gelaufen sind, oder die VLFs neu ausgerichtet werden sollen. Siehe hierzu:

    http://www.insidesql.org/blogs/cmu/sql_server/schon-mal-von-vlfs-gehoert

    http://www.insidesql.org/blogs/cmu/sql_server/wichtige-aenderung-bei-der-anlage

    http://www.insidesql.org/blogs/cmu/sql_server/anzahl-von-vlfs-schaetzen


    Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu

    Donnerstag, 27. Juni 2019 06:25
  • Gerade das nicht aufgeräumte Transaktionsprotokoll hat bei mir zumindest in der Vergangenheit z.T. zu massiven Performanceeinbußen geführt.
    Bei einer 300MB-Datenbank war dieses nämlich auf mittlerweile mehr als 20GB angewachsen, gerade weil sich niemand darum gekümmert hat.
    Somit dauerte der Update von ca. 100.000 Sätzen in einem SQL-Statement fast 4 Minuten!
    Nach der Bereinigung lag der Update wieder bei unter 10 Sekunden.

    Also das Aufräumen sein zu lassen, halte ich nicht für richtig, gerade weil der SQL-Server dies nicht von selber tut.

    Donnerstag, 27. Juni 2019 07:38
  • Also das Aufräumen sein zu lassen, halte ich nicht für richtig, gerade weil der SQL-Server dies nicht von selber tut.

    Moin,

    bei Transaktionsprotokollen ist zu unterscheiden zwischen "abschneiden" (unbedingt machen!) und "verkleinern" (unbedingt sein lassen bzw. nur bei Bedarf ausführen!), also zwischen BACKUP LOG und DBCC SHRINKFILE.

    Und je nachdem, was die Datenbank tut, kann man auch einen scheuen Blick in Richtung "Recovery Model = Simple" oder zumindest Bulk Logged richten ;-)


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 27. Juni 2019 07:45
  • Da stellst du mich nun gedanklich vor ein Problem:

    Was ist denn der Unterschied zwischen "abschneiden" und "verkleinern" bei einer Protokolldatei?
    Rein technisch sehe ich da keinen;-).

    Donnerstag, 27. Juni 2019 08:26
  • Da stellst du mich nun gedanklich vor ein Problem:

    Was ist denn der Unterschied zwischen "abschneiden" und "verkleinern" bei einer Protokolldatei?
    Rein technisch sehe ich da keinen;-).

    Wenn man regelmäßig abschneidet, entspricht der Whitespace in der LDF-Datei in etwa dem Wachstum zwischen den Log-Backups und hält sich somit in Grenzen. Da muss also nix verkleinert werden, nur damit die Datei zum nächsten Abschneide-Zyklus wieder anwächst.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 27. Juni 2019 09:11