Schedules im SQL Server scripten

Wenn man ein SSDT Datenbank-Projekt aufbauen möchte ist man in der Regel bestrebt alle Artefakte die es in irgendeiner Art und Weise im Datenbankserver gibt auch in das SSDT Datenbank-Projekt aufzunehmen. Ziel sollte es sein den kompletten Datenbankserver aus der Versionsverwaltung wieder herstellen zu können. In diesem Zuge sollte man auch Datenbankobjekte wie beispielsweise SQL Server Agent Jobs scripten. Während das bei den SQL Server Agent Jobs noch relativ einfach aus dem SQL Server Management Studio heraus machbar ist, ist das für Schedules, also für Zeitpläne, nicht so einfach. Hier gibt es (zumindest nach meinem Kenntnisstand) keine Möglichkeit die Schedules automatisch rauszuscripten. Naja – selbst ist der Mann, deswegen habe ich mal das folgende Script entwickelt:

Dieses Script macht Folgendes: Es liest alle Schedules aus der Tabelle sysschedules aus und erzeugt für jeden Schedule einen Befehl der diese anlegt bzw. ändert. Im Script wird abgefragt ob es die jeweilige Schedule auf dem Zielserver bereits gibt. Ist das nicht der Fall, so wird die Schedule angelegt, gibt es die Schedule schon, dann wird sie aktualisiert. Das bietet uns die Möglichkeit, dass das SSDT Projekt immer deploybar ist und dass man im SSDT-Projekt einfach nur oben die Parameter ändert und der Schedule bei der nächsten Bereitstellung automatisch auf die neuen Parameter umgestellt wird.

Ein Beispiel für das von dem Script oben automatisch generierte Script ist das folgende:

Dieses Script kann ich jetzt einfach in ein Post-Deployment Script meines SSDT-Projektes einbinden.

3 thoughts on “Schedules im SQL Server scripten

  • Hallo Frank,

    einen SQL Server Agent Schedule von A nach B bringen?
    Hmmm…
    Da wüsste ich was:
    Import-Module DBATOOLS
    Copy-DbaAgentSharedSchedule -Source MeinServerA -Destination MeinServerB
    Sofern die Schedules auf B schon existieren kommt noch der Parameter -Force hinten dran.

    Somit habe ich auch schnell die Schedules von A nach B gebracht.
    Ich gebe Dir jedoch recht: damit habe ich noch nix in einer Quellcodeverwaltung hinterlegt.

    ABER: nun kommt “The Mighty Pipe” und ich nutze nicht das Copy-Dba… sondern
    Get-DbaAgentSchedule
    Und wieder habe ich nur einen Einzeiler:
    Get-DbaAgentSchedule -SQLInstance MeinServerA | Export-DbaScript -Path “C:\tmp\MeineSchedules..SQL”

    Fertig ist eine Datei mit allen Schedules.

    Gruß
    Dirk

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

%d Bloggern gefällt das: