Αρχική σελίδα » πως να » Παρτίδα δέσμης ενεργειών για τη δημιουργία αντιγράφων ασφαλείας όλων των βάσεων δεδομένων SQL Server

    Παρτίδα δέσμης ενεργειών για τη δημιουργία αντιγράφων ασφαλείας όλων των βάσεων δεδομένων SQL Server

    Έχουμε ήδη καλύψει τον τρόπο δημιουργίας αντιγράφων ασφαλείας μιας βάσης δεδομένων SQL Server από τη γραμμή εντολών, οπότε αν θέλετε να δημιουργήσετε αντίγραφα ασφαλείας όλων των βάσεων δεδομένων σας ταυτόχρονα; Θα μπορούσατε να δημιουργήσετε μια δέσμη δέσμης ενεργειών που εκτελεί την εντολή δημιουργίας αντιγράφων ασφαλείας για κάθε βάση δεδομένων, αλλά αυτή η δέσμη ενεργειών θα πρέπει να ενημερώνεται κάθε φορά που προστίθεται ή αφαιρείται μια βάση δεδομένων. Επιπλέον, τα αντίγραφα ασφαλείας των βάσεων δεδομένων θα προσαρτηθούν σε ένα αρχείο το οποίο θα αυξηθεί κατά το μέγεθος του νέου αντιγράφου ασφαλείας κάθε φορά που εκτελείται. Αντ 'αυτού, στην αληθινή μόδα "set it and forget it", θα δημιουργήσουμε ένα σενάριο παρτίδας το οποίο θα προσαρμοστεί στον SQL Server σας καθώς προστίθενται και αφαιρούνται νέες βάσεις δεδομένων.

    Για να φτάσετε στο σημείο, αυτό είναι το εφεδρικό script:

    @ OFF OFF
    SETLOCAL

    REM Λήψη ημερομηνίας σε μορφή ΕΕΕΕ-ΜΜ-DD (υποθέτει ότι η τοποθεσία είναι οι Ηνωμένες Πολιτείες)
    FOR / F "μάρκες = 1,2,3,4 delims = /" %% A IN ('Ημερομηνία / Τ') DO SET NowDate = %% D - %% B - %% C

    REM Δημιουργία μιας λίστας βάσεων δεδομένων για δημιουργία αντιγράφων ασφαλείας
    SET DBList =% SystemDrive% SQLDBList.txt
    SqlCmd -E -S MyServer -h-1 -W -Q "SET NoCount ON; ΕΠΙΛΕΞΤΕ το όνομα FROM master.dbo.sysΠεριγραφή δεδομένων WHERE [Όνομα] NOT IN ('master', 'model', 'msdb', 'tempdb') ">"% DBList% "

    REM Δημιουργία αντιγράφου ασφαλείας κάθε βάσης δεδομένων, προεπεξεργασία της ημερομηνίας στο όνομα αρχείου
    FOR / F "μάρκες = *" %% I IN (% DBList%) DO (
    ECHO Υποστήριξη βάσης δεδομένων: %% I
    SqlCmd -E -S MyServer -Q "BACKUP DATABASE [%% I] Στο δίσκο =" D: Backup% NowDate% _ %% I.bak ""
    ΗΧΩ.
    )

    REM Καθαρίστε το αρχείο temp
    ΕΑΝ ΥΠΑΡΧΕΙ "% DBList%" DEL / F / Q "% DBList%"

    ENDLOCAL

    Υποθέτοντας ότι η ημερομηνία είναι 1/13/2009 και έχετε 3 βάσεις δεδομένων που ονομάζονται 'MyDB', 'OtherDB' και 'DB Name with Spaces', το σενάριο θα παράγει 3 αρχεία στην καθορισμένη τοποθεσία αντιγράφων ασφαλείας:

    • 2009-01-13_AnotherDB.bak
    • 2009-01-13_DB Όνομα με το Spaces.bak
    • 2009-01-13_MyDB.bak

    Προσαρμογή και εκτέλεση του δέσμης δέσμης ενεργειών

    Φυσικά, θα θελήσετε να προσαρμόσετε το σενάριο στο περιβάλλον σας, γι 'αυτό είναι αυτό που πρέπει να κάνετε:

    • Εάν η τοπική ρύθμιση του μηχανήματός σας δεν έχει οριστεί στις ΗΠΑ, η εντολή 'Date / T' ενδέχεται να μην επιστρέψει την ημερομηνία στη μορφή "Τρι 01/13/2009". Σε αυτή την περίπτωση, η μεταβλητή NowDate δεν θα παράγει την επιθυμητή μορφή και θα πρέπει να προσαρμοστεί. (1 θέση)
    • Αλλάξτε το "MyServer" για να είναι το όνομα του SQL Server σας (προσθέστε το όνομα της εμφάνισης, αν υπάρχει). (2 θέσεις)
    • Οι βάσεις δεδομένων που ονομάζονται 'master', 'model', 'msdb' και 'tempdb' είναι βάσεις δεδομένων που μεταφέρονται με τον SQL Server. Μπορείτε να προσθέσετε επιπλέον ονόματα βάσεων δεδομένων σε αυτήν τη λίστα, αν δεν θέλετε να δημιουργούνται αντίγραφα ασφαλείας. (1 θέση)
    • Αλλάξτε τη θέση δημιουργίας αντιγράφων ασφαλείας από το "D: Backup" στη θέση όπου θέλετε να αποθηκευτούν τα αρχεία αντιγράφων ασφαλείας της βάσης δεδομένων.

    Μόλις προσαρμόσετε το σενάριο δέσμης ενεργειών, προγραμματίστε το να εκτελείται μέσω του Windows Task Scheduler ως χρήστης με δικαιώματα διαχειριστή και έχετε όλοι ρυθμιστεί.