-- Pomocou kurzora zalohujte vsetky databazy do priecinka C:ZalohaDB -- s vyuzitim sysdatabases a BACKUP DATABASE. Nazov zalohy bude v -- tvare [nazov_db]_[dnesny_datum].BAK GO -- Vsetky databazy SELECT * FROM MASTER.dbo.sysdatabases; -- Nazvy vsetkych uzivatelskych databaz. SELECT name FROM MASTER.dbo.sysdatabases WHERE name NOT IN('master', 'model', 'msdb', 'tempdb'); ---- 0 - Pomocne premenne DECLARE @priecinok NVARCHAR(MAX) = N'C:\ZalohaDB\'; DECLARE @nazovDb VARCHAR(MAX); DECLARE @cestaKZalohe NVARCHAR(MAX); ---- 1 - Vytvor kurzor na predchadzajuci dopyt (kurzor ~ iterator riadkov) DECLARE zaloha_cursor CURSOR FOR SELECT name FROM MASTER.dbo.sysdatabases WHERE name NOT IN('master', 'model', 'msdb', 'tempdb'); ---- 2 - "Zapni"/otvor kurzor OPEN zaloha_cursor; ---- 3 - Nacitaj prvy riadok z kurzora do pomocnych premennych FETCH NEXT FROM zaloha_cursor INTO @nazovDb; -- Iterovanie cez kurzor WHILE @@FETCH_STATUS = 0 -- Kym posledny FETCH zbehol uspesne BEGIN -- Na pretypovanie DATETIME na VARCHAR pouzijeme funkciu CONVERT, kde narozdiel od CAST vieme format datumu. SET @cestaKZalohe = @priecinok + @nazovDb + '_' + CONVERT(VARCHAR(20), GETDATE(), 112) + '.BAK'; -- 112 je kod pre ISO format BACKUP DATABASE @nazovDb TO DISK = @cestaKZalohe; ---- 3 - Nacitaj dalsi riadok z kurzora do pomocnych premennych FETCH NEXT FROM zaloha_cursor INTO @nazovDb; END; ---- 4 - "Vypni"/zatvor kurzor CLOSE zaloha_cursor; ---- 5 - zmaz kurzor DEALLOCATE zaloha_cursor; GO