Announcement

Collapse
No announcement yet.

MS SQL - Backup Script

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MS SQL - Backup Script

    Hallo,

    ich möchte ein DOS-Script erstellen, welches meine MS SQL Datenbank sichert.

    Sonntags-Freitags = differentiell
    Samstags = voll

    Nun habe ich folgendes Script erstellt - jedoch scheint es so, als würde das Script ein Inkrementelles Backup machen.

    Hier ein Ausschnitt aus dem Script:

    Code:
    %INSTPATH%\setup\tools\osql.exe -S %SQL_DB% -E -Q "BACKUP DATABASE *Datenbank-Name* TO DISK = '%DB_BACKUP_PATH%\%WOCHENTAG%\%BACKUP_FILE%.bak' WITH DIFFERENTIAL
    Dieser Ausschnitt soll ein Differentielles Backup erstellen.

    Gestern (Dienstag) kam dabei eine 10MB große Datei heraus
    Heute (Mittwoch) kam eine 1 MB Datei heraus.

    Am Dienstag habe ich manuell eine Voll-Sicherung erstellt.

  • #2
    Hallo Mr. Vain,

    es gibt im MS SQL Server keine inkrementelle Sicherung, von daher kann keine "versehentlich "durchgeführt worden sein.

    Du hast nicht dabei geschrieben, wann genau Du die manuelle Voll-Sicherung durchgeführt hast, ich vermute mal, nach der ersten differentiellen Sicherung?

    Eine diff. Sicherung sichert alle Änderungen, die seit der letzten Vollsicherung vorgenommen wurden.
    Von daher passt die Größe der Mittwoch-Sic; meine Vermutung vorausgesetzt.
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Danke für deine Antwort, aber die Größe der Sicherung vom Mittwoch passt nicht wirklich.

      Vollsicherung(manuell): Dienstag-mittag: 4GB
      Diff Sicherung: Dienstag-abend : 10 MB
      Diff Sicherung: Mittwoch: 1 MB


      das passt irgendwie nicht.

      Comment


      • #4
        heute erhielt ich eine 400KB "kleine" Datei.

        Comment


        • #5
          Kann ich so nicht nachvollziehen.
          Ich habe von einer DB eine Vollsicherung gemacht und anschließend 10 Diffs mit dem unten stehenden Script; alle Diffs waren gleich groß.
          Dann ein großes Update, wieder die 10 Diffs; sie waren größer als beim ersten mal und auch wieder alle 10 gleich groß.
          Nochmal Update; gleiches Ergebnis.

          Diese Unterschiedlichen Größen hat man nur bei einer Transaktionsprotokoll-Sicherung, aber der Befehl dazu lautet
          BACKUP LOG

          [highlight=SQL]DECLARE @file varchar(200), @loop smallint

          SET @loop = 0
          WHILE @loop < 10
          BEGIN
          SET @file = 'F:\oHelperTest\' + CONVERT(varchar, @loop) + '.bak'

          BACKUP DATABASE AdventureWorks
          TO DISK = @file WITH DIFFERENTIAL, INIT

          SET @loop = @loop +1
          END[/highlight]
          Olaf Helper

          <Blog> <Xing>
          * cogito ergo sum * errare humanum est * quote erat demonstrandum *
          Wenn ich denke, ist das ein Fehler und das beweise ich täglich

          Comment


          • #6
            Backup Historie anzeigen lassen mit
            [highlight=SQL] SELECT BUP.database_name AS [Database]
            , BUP.[Name] AS BackupName
            , BUP.backup_start_date AS bkStart
            , Utl.TimeDiffAsStrChar (BUP.Backup_start_date
            ,BUP.backup_finish_date
            ,SPACE(1), NCHAR(69)+NCHAR(78), 0) AS TimeTaken --"en"
            , BUP.backup_finish_date AS BackupDate
            , BUP.[User_name] AS Backupee
            , BUP.backup_size AS BackupSize
            , CAST (BUP.backup_size / 1000000 AS VARCHAR(15))
            + SPACE(1) + NCHAR(77)+NCHAR(66) AS bkSizeInMB --"MB"
            , BUP.Server_Name AS ServerName
            , CASE BUP.[type]
            WHEN NCHAR(68) THEN N'Full' -- "D"
            WHEN NCHAR(73) THEN N'Differential' -- "I"
            WHEN NCHAR(76) THEN N'Transaction Log' -- "L"
            END AS BackupType
            , BUP.Recovery_Model AS RecoveryModel
            , BMF.physical_device_name AS bkFileName
            FROM msdb.dbo.backupset AS BUP
            LEFT JOIN msdb.dbo.backupmediafamily AS BMF ON BUP.media_set_id = BMF.media_set_id
            ORDER BY bkStart[/highlight]
            dann sieht man wann was für Backups (FULL, DIFF oder LOG) gemacht wurden

            Comment

            Working...
            X