
Skrypt zaczerpnięty z internetu, tym razem gotowy do użycia i wykorzystania. Wykonuje kopię wszystkich baz danych lub wybranych zawierających określony ciąg znaków zmieniając odpowiednie linie do dowolnie wskazanego katalogu pod warunkiem że SMS będzie miał uprawnienia do wybranego katalogu. Skrypt jest szczególnie przydatny przy tworzeniu kopii wielu baz danych przed aktualizacją oprogramowania i w moim przypadku właśnie do tego celu jest wykorzystywany.
W skrypcie jest kilka elementów konfigurowalnych i tak wyróżniamy elementy:
-- specify database backup directory
określ katalog kopii zapasowej bazy danych
-- specify filename format
określ format nazwy pliku
-- exclude these databases
wyklucz te bazy danych lub ogranicz do baz danych zawierającą określoną nazwę
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
-- specify database backup directory
SET @path = 'D:\Sage\Archiwum' + '\backup_'
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112) + REPLACE(CONVERT(VARCHAR(20),GETDATE(),108),':','')
DECLARE db_cursor CURSOR READ_ONLY FOR
SELECT name
FROM master.dbo.sysdatabases
-- exclude these databases
WHERE name NOT IN ('master','model','msdb','tempdb')
-- where name like '%50c%'
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor