Pomoc Backup baz danych z dockera MSSQL

CrazyMario

Entry Technician
Q Associate
5 Lipiec 2018
72
5
8
44
Stolno
QNAP
TS-x53D
Ethernet
1 GbE
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.

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
 
W tej części - czy totalnie na końcu ??
Kod:
WHILE @@FETCH_STATUS = 0   
BEGIN   
   SET @fileName = @path + @name + '.BAK' 
   BACKUP DATABASE @name TO DISK = @fileName 
   FETCH NEXT FROM db_cursor INTO @name
   with init
END
 
Dzięki, od razu leci test.
Kod:
Msg 319, Level 15, State 1, Server xxxxxxxxx, Line 20
Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
Za 2 razem poszło już bez błędów.
Dziękuję. !!!!!