INFORMATICS

The Best

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
exit

lub

SQLCMD.EXE sqlcmd -S Nazwaserwera\instancja -i sql_backup.sql

 

Search