Backup MSSQL
Jak uruchomić automatyczny backup baz w Microsoft SQL 2005/2008/R2 Express
stworzony przez SzymonN dnia mar.27, 2011, w kategorii: MSSQL
Darmowy serwer bazodanowy jakim jest Microsoft SQL Express oprócz limitu wykorzystania jednego fizycznego procesora, 1 GB pamięci RAM i 12 GB limitu wielkości bazy (R2) , został pozbawiony Agenta SQL odpowiedzialnego między innymi za uruchamianie procesów na bazach w ustalonym harmonogramie, skutecznie ogranicza to również stworzenie zadania kopii znanego z pełnego rozwiązania Microsoft SQL Server.
Oczywiście samo wykonanie kopii cały czas jest możliwe np z wykorzystaniem harmonogramu zadań w samym systemie Windows . Poniżej przedstawiam skrypt który wykonuje automatyczny backup wszystkich baz danych w danej ( domyślnej ) instancji serwera SQL Express , tworząc codzienną 7-dniową pełną kopie, gdzie ostatnia kopia jest nadpisywana z każdym pierwszym dniem nowego tygodnia . W skrypcie kopia baz danych umieszczana jest w katalogu D:\Backup
sql_backup.sql
DECLARE @DBName varchar(255)
DECLARE @DATABASES_Fetch int
DECLARE DATABASES_CURSOR CURSOR FOR
select
DATABASE_NAME = db_name(s_mf.database_id)
from
sys.master_files s_mf
where
– ONLINE
s_mf.state = 0
– Only look at databases to which we have access
and has_dbaccess(db_name(s_mf.database_id)) = 1
– Not master, tempdb or model
and db_name(s_mf.database_id) not in (‘Master’,'tempdb’,'model’)
group by s_mf.database_id
order by 1
OPEN DATABASES_CURSOR
FETCH NEXT FROM DATABASES_CURSOR INTO @DBName
WHILE @@FETCH_STATUS = 0
BEGIN
declare @DBFileName varchar(256)
set @DBFileName = datename(dw, getdate()) + ‘_’ +
replace(replace(@DBName,’:',’_'),’\',’_')
exec (‘BACKUP DATABASE [' + @DBName + '] TO DISK = N”D:\Backup\’ +
@DBFileName + ‘.bak’ + ”’ WITH NOFORMAT, INIT, NAME = N”’ +
@DBName + ‘-Full Database Backup”, SKIP, NOREWIND, NOUNLOAD, STATS = 100′)
FETCH NEXT FROM DATABASES_CURSOR INTO @DBName
END
CLOSE DATABASES_CURSOR
DEALLOCATE DATABASES_CURSOR
sqlbackup.cmd
SQLCMD.EXE -i sql_backup.sql
exitlub
SQLCMD.EXE sqlcmd -S Nazwaserwera\instancja -i sql_backup.sql