Witam.
Uruchomiłem jakiś czas temu backup baz danych z kontenera MSSQL -> skryptem znalezionym tu na forum.
Crontab uruchamia skrypt jak najbardziej poprawnie, tworzą się pliki wszystkich baz danych z kontenera - we wskazanych miejscach.
Na początku tworzyły się pliki ze znacznikiem czasowym, żeby je rozróżnić - czyli wszystko gra.
Ze skryptu wywaliłem parametr dotyczący tworzenia plików ze znacznikiem czasowym, sądząc że tworzone pliki będą nadpisywały te poprzednie.
Potrzebuję tylko jedną wersję pliku danego dnia o danej godzinie - ponieważ katalog z utworzonymi backupami leci poprzez Xopero do chmury.
No i niestety się pomyliłem. Raz utworzony plik rozrasta się tylko rozmiarem, każdy kolejny tworzony nie zastępuje poprzedniego....
W jaki sposób można zmodyfikować ten skrypt aby kasował wszystkie poprzednie pliki z tego katalogu i tworzył tylko kopię wszystkich dostępnych baz danych.
Model serwera: QNAP TS-453D
Uruchomiłem jakiś czas temu backup baz danych z kontenera MSSQL -> skryptem znalezionym tu na forum.
Crontab uruchamia skrypt jak najbardziej poprawnie, tworzą się pliki wszystkich baz danych z kontenera - we wskazanych miejscach.
Na początku tworzyły się pliki ze znacznikiem czasowym, żeby je rozróżnić - czyli wszystko gra.
Ze skryptu wywaliłem parametr dotyczący tworzenia plików ze znacznikiem czasowym, sądząc że tworzone pliki będą nadpisywały te poprzednie.
Potrzebuję tylko jedną wersję pliku danego dnia o danej godzinie - ponieważ katalog z utworzonymi backupami leci poprzez Xopero do chmury.
No i niestety się pomyliłem. Raz utworzony plik rozrasta się tylko rozmiarem, każdy kolejny tworzony nie zastępuje poprzedniego....
W jaki sposób można zmodyfikować ten skrypt aby kasował wszystkie poprzednie pliki z tego katalogu i tworzył tylko kopię wszystkich dostępnych baz danych.
Kod:
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
-- specify database backup directory
SET @path = '/MSSQL/Backup/Cloud/'
DECLARE db_cursor CURSOR READ_ONLY FOR
SELECT name
FROM master.sys.databases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases
AND state = 0 -- database is online
AND is_in_standby = 0 -- database is not read only for log shipping
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Model serwera: QNAP TS-453D