Z tego wpisu dowiecie się jak wykonać automatyczną kopię bazy dla Microsoft SQL Express.
Jest to skrypt który można zapisać jako plik z rozszerzeniem .bat. Skonfigurować harmonogram zadań, aby go wykonywał regularnie.
Skrypt ten ustawia ścieżkę folderu, w którym zostanie utworzona kopia zapasowa. Nazwę pliku kopii zapasowej oraz ścieżkę do narzędzia do zarządzania bazą danych SQL Server Express. Następnie łączy się z lokalnym serwerem SQL Express i wykonuje polecenie BACKUP DATABASE. Aby utworzyć kopię zapasową bazy danych i zapisać ją we wskazanym folderze. Na końcu wyświetla informację o zakończeniu kopii zapasowej.
Po prawidłowym wykonaniu backupu wykonuje sekcję usuwającą kopie zapasowe starsze niż np. 7 dni. Do tego celu używa polecenia „FORFILES”, które jest dostępne w systemie Windows.
Jak wykonać kopię SQL Express? Wystarczy poniższy kod zapisać w pliku .bat lub .cmd, podmienić ścieżki oraz nazwę serwera i bazy na swoje.
@echo off
REM Skrypt pochodzi z https://www.robinit.eu/
setlocal
REM Ścieżka do folderu, w którym ma zostać utworzona kopia zapasowa
set BACKUP_DIR=C:\Backup
REM Nazwa pliku kopii zapasowej
set BACKUP_FILE_NAME=sql_backup_%date:~10,4%%date:~7,2%%date:~4,2%_%time:~0,2%%time:~3,2%%time:~6,2%.bak
REM Ścieżka do narzędzia do zarządzania bazą danych SQL Server Express
set SQLCMD_EXE="C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\SQLCMD.exe"
REM Połączenie z lokalnym serwerem SQL Express (zmień "SQLEXPRESS" na odpowiednią nazwę instancji)
set SQL_CONNECTION=-S .\SQLEXPRESS -E
REM Polecenie wykonujące kopię zapasową (zmień "SAGE" na odpowiednią nazwę bazy)
set BACKUP_COMMAND="BACKUP DATABASE SAGE TO DISK='%BACKUP_DIR%\%BACKUP_FILE_NAME%'"
REM Polecenie "forfiles", które usuwa pliki z rozszerzeniem ".bak" z folderu określonego w zmiennej "BACKUP_DIR", które są starsze niż 7 dni. Parametr "/d -7" określa, że pliki starsze niż 7 dni powinny zostać usunięte.
set DELETE_COMMAND=forfiles /p %BACKUP_DIR% /m *.bak /d -7 /c "cmd /c del @path"
REM Wykonanie kopii zapasowej
%SQLCMD_EXE% %SQL_CONNECTION% -Q %BACKUP_COMMAND%
if %ERRORLEVEL% EQU 0 (
echo Kopiowanie bazy danych SQL Server Express zakończone.
%DELETE_COMMAND%
) else (
echo Błąd wykonania kopii.
)
W przykładowym skrypcie nie ma parametrów do podania hasła. Korzysta z autoryzacji Windows (parametr „-E”), która nie wymaga podawania hasła. Jeśli korzystasz z autoryzacji SQL, musisz dodać parametry do połączenia z bazą danych, takie jak nazwa użytkownika i hasło, do zmiennej SQL_CONNECTION. Na przykład, jeśli używasz autoryzacji SQL z nazwą użytkownika „user” i hasłem „password”, zmodyfikuj zmienną SQL_CONNECTION w ten sposób:
set SQL_CONNECTION=-S .\SQLEXPRESS -U user -P password
W tym przypadku połączenie z serwerem SQL Server Express wymaga podania nazwy użytkownika i hasła. Możesz również użyć zmiennej środowiskowej, aby ukryć hasło i zabezpieczyć skrypt. W tym celu zmodyfikuj zmienną SQL_CONNECTION w ten sposób:
set SQL_CONNECTION=-S .\SQLEXPRESS -U user -P %SQL_PASSWORD%
Następnie ustaw wartość zmiennej środowiskowej SQL_PASSWORD za pomocą polecenia „setx”:
setx SQL_PASSWORD "password" /m