<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Archiwa sp_BackupDatabases - EIGHTBIT</title>
	<atom:link href="https://eightbit.pl/tag/sp_backupdatabases/feed/" rel="self" type="application/rss+xml" />
	<link>https://eightbit.pl/tag/sp_backupdatabases/</link>
	<description>INFORMATYKA DLA FIRM</description>
	<lastBuildDate>Wed, 19 Aug 2026 10:59:08 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://eightbit.pl/wp-content/uploads/2023/03/logo-150x150.png</url>
	<title>Archiwa sp_BackupDatabases - EIGHTBIT</title>
	<link>https://eightbit.pl/tag/sp_backupdatabases/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Automatyczne kopie zapasowe SQL Server. Jak skonfigurować backup krok po kroku</title>
		<link>https://eightbit.pl/automatyczne-kopie-zapasowe-sql-server-jak-skonfigurowac-backup-krok-po-kroku/</link>
		
		<dc:creator><![CDATA[Kamil]]></dc:creator>
		<pubDate>Wed, 19 Aug 2026 10:54:31 +0000</pubDate>
				<category><![CDATA[Poradniki]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[Kopia zapasowa]]></category>
		<category><![CDATA[sp_BackupDatabases]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server Management Studio]]></category>
		<category><![CDATA[sqlcmd]]></category>
		<category><![CDATA[SSMS]]></category>
		<guid isPermaLink="false">https://eightbit.pl/?p=1686</guid>

					<description><![CDATA[<p>Kopia zapasowa bazy danych SQL Server to jeden z podstawowych elementów bezpieczeństwa danych w każdej firmie korzystającej z systemów informatycznych. Awaria serwera, uszkodzenie dysku, błąd użytkownika czy problem z oprogramowaniem może w kilka chwil doprowadzić do utraty danych, które są często niezbędne do codziennego funkcjonowania przedsiębiorstwa. W tym poradniku pokażę, jak skonfigurować automatyczną kopię zapasową&#8230;&#160;<a href="https://eightbit.pl/automatyczne-kopie-zapasowe-sql-server-jak-skonfigurowac-backup-krok-po-kroku/" rel="bookmark">Dowiedz się więcej &#187;<span class="screen-reader-text">Automatyczne kopie zapasowe SQL Server. Jak skonfigurować backup krok po kroku</span></a></p>
<p>Artykuł <a href="https://eightbit.pl/automatyczne-kopie-zapasowe-sql-server-jak-skonfigurowac-backup-krok-po-kroku/">Automatyczne kopie zapasowe SQL Server. Jak skonfigurować backup krok po kroku</a> pochodzi z serwisu <a href="https://eightbit.pl">EIGHTBIT</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Kopia zapasowa bazy danych SQL Server to jeden z podstawowych elementów bezpieczeństwa danych w każdej firmie korzystającej z systemów informatycznych. Awaria serwera, uszkodzenie dysku, błąd użytkownika czy problem z oprogramowaniem może w kilka chwil doprowadzić do utraty danych, które są często niezbędne do codziennego funkcjonowania przedsiębiorstwa.</p>



<p class="wp-block-paragraph">W tym poradniku pokażę, jak skonfigurować automatyczną kopię zapasową baz danych SQL Server w systemie Windows. Do wykonania zadania wykorzystamy SQL Server Management Studio, narzędzie sqlcmd oraz Harmonogram zadań Windows.</p>



<p class="wp-block-paragraph">Rozwiązanie jest szczególnie przydatne w przypadku SQL Server Express, który nie posiada komponentu SQL Server Agent odpowiedzialnego za automatyczne wykonywanie zadań. Microsoft jako jedno z rozwiązań wskazuje właśnie połączenie skryptu Transact-SQL z Harmonogramem zadań Windows.</p>



<p class="wp-block-paragraph">W przykładzie przygotujemy własny skrypt, który przed wykonaniem kopii usuwa poprzedni katalog backupu, tworzy go ponownie, wykonuje kopie wszystkich baz użytkownika oraz zapisuje informacje o przebiegu operacji w pliku logu.</p>



<h2 class="wp-block-heading">SQL Server i kopie zapasowe</h2>



<p class="wp-block-paragraph">SQL Server może wykonywać kopie zapasowe baz danych bez instalowania dodatkowego oprogramowania do samego wykonywania backupu. Problem pojawia się wtedy, gdy chcemy, aby kopia wykonywała się automatycznie, na przykład codziennie w godzinach nocnych.</p>



<p class="wp-block-paragraph">W przypadku pełnych wersji SQL Server automatyzację można realizować między innymi przy wykorzystaniu SQL Server Agent. W SQL Server Express ten komponent nie jest dostępny. Dlatego w takim przypadku dobrym rozwiązaniem jest wykorzystanie programu sqlcmd oraz systemowego Harmonogramu zadań Windows.</p>



<p class="wp-block-paragraph">Cały mechanizm będzie wyglądał następująco:</p>



<p class="wp-block-paragraph">SQL Server → skrypt T-SQL → sqlcmd → plik BAT → Harmonogram zadań Windows</p>



<p class="wp-block-paragraph">Dzięki temu nie musimy każdego dnia ręcznie uruchamiać kopii zapasowej.</p>



<h2 class="wp-block-heading">Instalacja SQL Server Management Studio</h2>



<p class="wp-block-paragraph">Na początku potrzebujemy programu SQL Server Management Studio, czyli popularnego SSMS. Jest to graficzne narzędzie firmy Microsoft pozwalające między innymi na zarządzanie serwerem SQL, bazami danych, użytkownikami oraz wykonywanie zapytań SQL.</p>



<p class="wp-block-paragraph">Jeżeli SQL Server Management Studio nie jest jeszcze zainstalowane na komputerze, należy pobrać aktualną wersję z oficjalnej strony Microsoftu i przeprowadzić standardową instalację.</p>



<p class="wp-block-paragraph"><a href="https://learn.microsoft.com/pl-pl/ssms/install/install">https://learn.microsoft.com/pl-pl/ssms/install/install</a></p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="1280" height="720" src="https://eightbit.pl/wp-content/uploads/2026/08/10.webp" alt="" class="wp-image-1671" srcset="https://eightbit.pl/wp-content/uploads/2026/08/10.webp 1280w, https://eightbit.pl/wp-content/uploads/2026/08/10-300x169.webp 300w, https://eightbit.pl/wp-content/uploads/2026/08/10-1024x576.webp 1024w, https://eightbit.pl/wp-content/uploads/2026/08/10-768x432.webp 768w" sizes="(max-width: 1280px) 100vw, 1280px" /></figure>



<p class="wp-block-paragraph">Po uruchomieniu programu przechodzimy do okna połączenia z serwerem SQL.</p>



<h2 class="wp-block-heading">Połączenie z serwerem SQL</h2>



<p class="wp-block-paragraph">W oknie połączenia wybieramy odpowiednią instancję SQL Server.</p>



<p class="wp-block-paragraph">Jeżeli pracujemy bezpośrednio na komputerze, na którym znajduje się SQL Server Express, często będzie to instancja:</p>



<p class="wp-block-paragraph"><code>.\SQLEXPRESS</code></p>



<p class="wp-block-paragraph">W polu Uwierzytelnianie możemy wybrać Uwierzytelnianie systemu Windows. W takim przypadku SQL Server wykorzysta konto Windows, na którym jesteśmy zalogowani.</p>



<p class="wp-block-paragraph">Możliwe jest również wykorzystanie uwierzytelniania SQL Server, jeżeli w danym środowisku zostało ono skonfigurowane.</p>



<p class="wp-block-paragraph">Jeżeli łączymy się z SQL Server z innego komputera w sieci, sposób uwierzytelniania oraz konfiguracja dostępu zależą od konkretnego środowiska. Przy wykorzystaniu Windows Authentication konto musi posiadać odpowiednie uprawnienia na serwerze SQL.</p>



<p class="wp-block-paragraph">Po wybraniu odpowiednich ustawień klikamy Połącz.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="510" height="715" src="https://eightbit.pl/wp-content/uploads/2026/08/2-1.webp" alt="" class="wp-image-1687" srcset="https://eightbit.pl/wp-content/uploads/2026/08/2-1.webp 510w, https://eightbit.pl/wp-content/uploads/2026/08/2-1-214x300.webp 214w" sizes="(max-width: 510px) 100vw, 510px" /></figure>



<h2 class="wp-block-heading">Utworzenie zapytania SQL</h2>



<p class="wp-block-paragraph">Po poprawnym połączeniu z serwerem SQL w SQL Server Management Studio przechodzimy do opcji Nowe zapytanie.</p>



<p class="wp-block-paragraph">Otworzy się edytor, w którym możemy wykonywać polecenia Transact-SQL.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="888" src="https://eightbit.pl/wp-content/uploads/2026/08/3-1-1024x888.webp" alt="" class="wp-image-1688" srcset="https://eightbit.pl/wp-content/uploads/2026/08/3-1-1024x888.webp 1024w, https://eightbit.pl/wp-content/uploads/2026/08/3-1-300x260.webp 300w, https://eightbit.pl/wp-content/uploads/2026/08/3-1-768x666.webp 768w, https://eightbit.pl/wp-content/uploads/2026/08/3-1.webp 1441w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Microsoft udostępnia gotowy przykład skryptu przeznaczonego do automatyzacji kopii zapasowych SQL Server Express. W ramach tego rozwiązania tworzona jest procedura <code>sp_BackupDatabases</code>, którą później możemy uruchamiać za pomocą programu sqlcmd.</p>



<p class="wp-block-paragraph">Aktualny skrypt Microsoftu można znaleźć tutaj:</p>



<p class="wp-block-paragraph"><a href="https://raw.githubusercontent.com/microsoft/mssql-support/master/sample-scripts/backup_restore/SQL_Express_Backups.sql" rel="nofollow">SQL_Express_Backups.sql na GitHub</a></p>



<p class="wp-block-paragraph">Skrypt należy wkleić do okna nowego zapytania w SQL Server Management Studio i wykonać.</p>



<p class="wp-block-paragraph">W ten sposób przygotowujemy po stronie SQL Server procedurę, którą później będzie mógł uruchamiać nasz plik BAT.</p>



<h2 class="wp-block-heading">Czym jest sqlcmd?</h2>



<p class="wp-block-paragraph">Kolejnym elementem jest <code>sqlcmd</code>. To narzędzie wiersza poleceń firmy Microsoft, które pozwala wykonywać polecenia Transact-SQL, procedury oraz całe skrypty bez konieczności otwierania SQL Server Management Studio.</p>



<p class="wp-block-paragraph">Jest to bardzo przydatne przy automatyzacji. Nasz skrypt BAT może uruchomić <code>sqlcmd</code>, a <code>sqlcmd</code> połączy się z SQL Server i wykona polecenie odpowiedzialne za utworzenie kopii zapasowej. Dokumentacja Microsoftu wskazuje, że <code>sqlcmd</code> może być wykorzystywany między innymi z poziomu wiersza poleceń oraz skryptów systemu Windows.</p>



<p class="wp-block-paragraph">Warto wiedzieć, że obecnie występują dwie odmiany narzędzia sqlcmd. Microsoft opisuje <code>sqlcmd (Go)</code> jako samodzielne narzędzie, które można pobrać niezależnie od SQL Server. Dostępna jest również wersja <code>sqlcmd (ODBC)</code>, która jest związana z SQL Server lub Microsoft Command Line Utilities.</p>



<p class="wp-block-paragraph">Microsoft informuje również, że od SQL Server 2016 sqlcmd jest oferowane jako osobne narzędzie.</p>



<h2 class="wp-block-heading">Sprawdzenie, czy sqlcmd jest zainstalowane</h2>



<p class="wp-block-paragraph">Zanim zaczniemy instalować dodatkowe oprogramowanie, warto sprawdzić, czy <code>sqlcmd</code> jest już dostępne w systemie.</p>



<p class="wp-block-paragraph">Uruchamiamy Wiersz polecenia Windows, czyli CMD, i wpisujemy:</p>



<p class="wp-block-paragraph"><code>sqlcmd -?</code></p>



<p class="wp-block-paragraph">Jeżeli narzędzie jest prawidłowo zainstalowane i znajduje się w zmiennej PATH, zobaczymy ekran pomocy programu.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="736" height="742" src="https://eightbit.pl/wp-content/uploads/2026/08/4-1.webp" alt="" class="wp-image-1689" srcset="https://eightbit.pl/wp-content/uploads/2026/08/4-1.webp 736w, https://eightbit.pl/wp-content/uploads/2026/08/4-1-298x300.webp 298w, https://eightbit.pl/wp-content/uploads/2026/08/4-1-150x150.webp 150w" sizes="auto, (max-width: 736px) 100vw, 736px" /></figure>



<p class="wp-block-paragraph">W przypadku aktualnego <code>sqlcmd (Go)</code> parametr <code>-?</code> jest dostępny między innymi dla zachowania zgodności ze starszą składnią. Microsoft opisuje również opcję <code>--version</code>, która pozwala sprawdzić wersję zainstalowanego narzędzia.</p>



<p class="wp-block-paragraph">Możemy więc również użyć:</p>



<p class="wp-block-paragraph"><code>sqlcmd --version</code></p>



<p class="wp-block-paragraph">Jeżeli system nie rozpoznaje polecenia <code>sqlcmd</code>, należy zainstalować odpowiednią wersję narzędzia.</p>



<p class="wp-block-paragraph">Aktualne wydania <code>sqlcmd (Go)</code> można pobrać z oficjalnego repozytorium Microsoft:</p>



<p class="wp-block-paragraph"><a href="https://github.com/microsoft/go-sqlcmd/releases/latest" data-type="link" data-id="https://github.com/microsoft/go-sqlcmd/releases/latest">Pobierz sqlcmd z GitHub</a></p>



<p class="wp-block-paragraph">Po instalacji i restarcie serwera warto ponownie otworzyć CMD i sprawdzić:</p>



<p class="wp-block-paragraph"><code>sqlcmd -?</code></p>



<h2 class="wp-block-heading">Pierwszy prosty skrypt do wykonywania kopii</h2>



<p class="wp-block-paragraph">Kiedy mamy już przygotowaną procedurę <code>sp_BackupDatabases</code> oraz działające <code>sqlcmd</code>, możemy stworzyć pierwszy skrypt BAT.</p>



<p class="wp-block-paragraph">Otwieramy Notatnik i wklejamy:</p>



<pre class="wp-block-code"><code>@echo off

sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='C:\SQLBackups\', @backupType='F'"

exit /b %ERRORLEVEL%</code></pre>



<p class="wp-block-paragraph">Plik zapisujemy na przykład jako:</p>



<p class="wp-block-paragraph"><code>SQLBackup.bat</code></p>



<p class="wp-block-paragraph">Warto zwrócić uwagę na poszczególne parametry.</p>



<p class="wp-block-paragraph"><code>-S .\SQLEXPRESS</code> wskazuje instancję SQL Server, z którą chcemy się połączyć.</p>



<p class="wp-block-paragraph"><code>-E</code> oznacza wykorzystanie uwierzytelniania Windows.</p>



<p class="wp-block-paragraph"><code>-Q</code> pozwala wykonać podane zapytanie i zakończyć działanie programu sqlcmd.</p>



<p class="wp-block-paragraph">W tym przykładzie uruchamiana jest procedura <code>sp_BackupDatabases</code>, która wykonuje pełną kopię baz danych do wskazanego katalogu.</p>



<p class="wp-block-paragraph">Microsoft wykorzystuje bardzo podobny mechanizm w swoim poradniku dotyczącym automatyzacji backupów SQL Server Express.</p>



<h2 class="wp-block-heading">Własny skrypt do automatycznej kopii SQL Server</h2>



<p class="wp-block-paragraph">Podstawowy przykład Microsoftu możemy rozbudować i dostosować do własnych potrzeb.</p>



<p class="wp-block-paragraph">W poniższym przykładzie skrypt przed wykonaniem kopii usuwa istniejący katalog backupu, tworzy go ponownie, sprawdza dostępność programu <code>sqlcmd</code>, wykonuje pełne kopie baz użytkownika oraz zapisuje informacje o wykonaniu operacji w pliku logu.</p>



<p class="wp-block-paragraph">Dzięki temu po każdym uruchomieniu otrzymujemy świeży zestaw kopii baz danych.</p>



<p class="wp-block-paragraph">Przykładowy skrypt:</p>



<pre class="wp-block-code"><code>@echo off
setlocal EnableExtensions

REM ============================================================
REM KONFIGURACJA
REM ============================================================

REM Nazwa instancji SQL Server
set "SQLSERVER=.\SQLEXPRESS"

REM Katalog, w którym będą przechowywane kopie zapasowe
set "BACKUPDIR=C:\SQLBackups"

REM Plik logu
set "LOGFILE=%BACKUPDIR%\SQLBackup.log"


REM ============================================================
REM INFORMACJA
REM ============================================================

echo ============================================================
echo AUTOMATYCZNA KOPIA ZAPASOWA SQL SERVER
echo ============================================================
echo Instancja SQL Server: %SQLSERVER%
echo Katalog kopii:        %BACKUPDIR%
echo.


REM ============================================================
REM USUNIĘCIE STAREGO KATALOGU
REM ============================================================

echo Usuwanie poprzedniego katalogu kopii...

if exist "%BACKUPDIR%" (
    rmdir /S /Q "%BACKUPDIR%"

    if exist "%BACKUPDIR%" (
        echo BLAD: Nie mozna usunac katalogu %BACKUPDIR%
        exit /b 1
    )
)


REM ============================================================
REM UTWORZENIE KATALOGU
REM ============================================================

echo Tworzenie katalogu kopii...

mkdir "%BACKUPDIR%"

if not exist "%BACKUPDIR%" (
    echo BLAD: Nie mozna utworzyc katalogu %BACKUPDIR%
    exit /b 1
)


REM ============================================================
REM SPRAWDZENIE SQLCMD
REM ============================================================

echo Sprawdzanie programu sqlcmd...

where sqlcmd >nul 2>&amp;1

if %ERRORLEVEL% NEQ 0 (
    echo BLAD: Nie znaleziono programu sqlcmd.
    echo Zainstaluj narzedzie sqlcmd i upewnij sie, ze znajduje sie w PATH.
    exit /b 1
)


REM ============================================================
REM UTWORZENIE PLIKU LOGU
REM ============================================================

echo &#91;%date% %time%] Rozpoczecie wykonywania kopii zapasowej. > "%LOGFILE%"
echo &#91;%date% %time%] Instancja: %SQLSERVER% >> "%LOGFILE%"
echo &#91;%date% %time%] Katalog: %BACKUPDIR% >> "%LOGFILE%"
echo. >> "%LOGFILE%"


REM ============================================================
REM WYKONANIE KOPII BAZ DANYCH
REM ============================================================

echo Rozpoczynam wykonywanie kopii...
echo.

sqlcmd ^
-S "%SQLSERVER%" ^
-E ^
-b ^
-Q "DECLARE @name NVARCHAR(128); DECLARE @file NVARCHAR(4000); DECLARE db_cursor CURSOR FOR SELECT name FROM sys.databases WHERE database_id > 4 AND state = 0; OPEN db_cursor; FETCH NEXT FROM db_cursor INTO @name; WHILE @@FETCH_STATUS = 0 BEGIN SET @file = N'%BACKUPDIR%\'+@name+N'.bak'; PRINT 'Backup bazy: '+@name; BACKUP DATABASE @name TO DISK = @file WITH INIT, CHECKSUM, STATS = 10; FETCH NEXT FROM db_cursor INTO @name; END; CLOSE db_cursor; DEALLOCATE db_cursor;" >> "%LOGFILE%" 2>&amp;1


REM ============================================================
REM SPRAWDZENIE WYNIKU
REM ============================================================

if %ERRORLEVEL% NEQ 0 (
    echo.
    echo ============================================================
    echo BLAD PODCZAS WYKONYWANIA KOPII!
    echo ============================================================
    echo Szczegoly znajduja sie w:
    echo %LOGFILE%
    exit /b 1
)


REM ============================================================
REM ZAKONCZENIE
REM ============================================================

echo.
echo ============================================================
echo KOPIA ZAPASOWA ZAKONCZONA POMYSLNIE
echo ============================================================
echo.

echo &#91;%date% %time%] Kopia zakonczona pomyslnie. >> "%LOGFILE%"

exit /b 0</code></pre>



<h3 class="wp-block-heading">Co robi przygotowany skrypt?</h3>



<p class="wp-block-paragraph">Na początku definiujemy podstawowe parametry. W tym przypadku są to nazwa instancji SQL Server oraz lokalizacja, w której mają zostać zapisane kopie.</p>



<pre class="wp-block-code"><code>set "SQLSERVER=.\SQLEXPRESS"
set "BACKUPDIR=C:\SQLBackups"</code></pre>



<p class="wp-block-paragraph">Jeżeli korzystamy z innej instancji SQL Server, wystarczy zmienić pierwszą wartość.</p>



<p class="wp-block-paragraph">Jeżeli kopie mają być zapisywane na innym dysku, zmieniamy drugą wartość.</p>



<p class="wp-block-paragraph">Przed wykonaniem backupu skrypt usuwa istniejący katalog:</p>



<pre class="wp-block-code"><code>rmdir /S /Q "%BACKUPDIR%"</code></pre>



<p class="wp-block-paragraph">Następnie tworzy go ponownie.</p>



<p class="wp-block-paragraph">Jest to rozwiązanie celowo przygotowane w taki sposób, aby w katalogu znajdowała się zawsze aktualna kopia baz danych.</p>



<p class="wp-block-paragraph">Następnie skrypt sprawdza, czy system może odnaleźć program <code>sqlcmd</code>.</p>



<p class="wp-block-paragraph">Jeżeli wszystko jest prawidłowo skonfigurowane, skrypt pobiera z SQL Server listę baz użytkownika i wykonuje dla nich pełne kopie zapasowe.</p>



<p class="wp-block-paragraph">Bazy systemowe, takie jak <code>master</code>, <code>model</code>, <code>msdb</code> oraz <code>tempdb</code>, są pomijane.</p>



<p class="wp-block-paragraph">Do wykonywania backupu wykorzystujemy polecenie:</p>



<pre class="wp-block-code"><code>BACKUP DATABASE</code></pre>



<p class="wp-block-paragraph">oraz opcje:</p>



<pre class="wp-block-code"><code>WITH INIT, CHECKSUM, STATS = 10</code></pre>



<p class="wp-block-paragraph"><code>INIT</code> powoduje zastąpienie zawartości wskazanego pliku backupu.</p>



<p class="wp-block-paragraph"><code>CHECKSUM</code> pozwala SQL Server wykonywać dodatkową kontrolę podczas operacji backupu.</p>



<p class="wp-block-paragraph"><code>STATS = 10</code> powoduje wyświetlanie informacji o postępie wykonywania kopii.</p>



<p class="wp-block-paragraph">Warto tutaj zwrócić uwagę, że w przypadku SQL Server Express nie należy dodawać do tego przykładu opcji <code>COMPRESSION</code>, jeżeli dana wersja i edycja SQL Server jej nie obsługuje. Skrypt powinien być zawsze dostosowany do konkretnej wersji oraz edycji SQL Server znajdującej się na serwerze.</p>



<p class="wp-block-paragraph">Po zakończeniu operacji informacje są zapisywane w pliku:</p>



<p class="wp-block-paragraph"><code>SQLBackup.log</code></p>



<p class="wp-block-paragraph">Dzięki temu w przypadku problemu możemy sprawdzić, co wydarzyło się podczas wykonywania kopii.</p>



<h2 class="wp-block-heading">Uwaga przed uruchomieniem skryptu</h2>



<p class="wp-block-paragraph">Ten przykład pokazuje, jak można technicznie zautomatyzować wykonywanie kopii SQL Server, ale przed zastosowaniem go na produkcyjnym serwerze trzeba dokładnie sprawdzić wszystkie ustawienia.</p>



<p class="wp-block-paragraph">Szczególnie ważna jest zmienna:</p>



<pre class="wp-block-code"><code>set "BACKUPDIR=C:\SQLBackups"</code></pre>



<p class="wp-block-paragraph">Skrypt usuwa wskazany katalog wraz z jego zawartością.</p>



<p class="wp-block-paragraph">Jeżeli przez pomyłkę wpiszemy nieprawidłową ścieżkę, możemy doprowadzić do usunięcia niewłaściwych danych. Z tego powodu przed uruchomieniem skryptu warto wykonać test na środowisku testowym oraz dokładnie sprawdzić każdą ścieżkę.</p>



<p class="wp-block-paragraph">Nie należy również przechowywać jedynej kopii danych na tym samym dysku fizycznym, na którym znajduje się baza SQL Server. Awaria dysku może wtedy spowodować jednoczesną utratę bazy oraz backupu.</p>



<p class="wp-block-paragraph">W praktycznym środowisku firmowym kopię warto dodatkowo przesyłać na drugi serwer, NAS lub do odpowiednio zabezpieczonej chmury.</p>



<h2 class="wp-block-heading">Testowanie skryptu</h2>



<p class="wp-block-paragraph">Zanim dodamy skrypt do Harmonogramu zadań Windows, należy uruchomić go ręcznie.</p>



<p class="wp-block-paragraph">Klikamy plik <code>SQLBackup.bat</code> i obserwujemy jego działanie.</p>



<p class="wp-block-paragraph">Po zakończeniu sprawdzamy, czy w katalogu:</p>



<p class="wp-block-paragraph"><code>C:\SQLBackups</code></p>



<p class="wp-block-paragraph">znalazły się pliki <code>.bak</code>.</p>



<p class="wp-block-paragraph">Powinniśmy również otworzyć plik:</p>



<p class="wp-block-paragraph"><code>SQLBackup.log</code></p>



<p class="wp-block-paragraph">i sprawdzić, czy SQL Server nie zgłosił żadnego błędu.</p>



<p class="wp-block-paragraph">Microsoft zaleca również przetestowanie pliku BAT z wiersza poleceń uruchomionego przy użyciu tego samego konta użytkownika, które będzie później właścicielem zadania w Harmonogramie zadań.</p>



<p class="wp-block-paragraph">Samo pojawienie się pliku <code>.bak</code> nie powinno być traktowane jako pełne potwierdzenie poprawności kopii. Warto okresowo wykonać próbne odtworzenie bazy na osobnym środowisku testowym.</p>



<h2 class="wp-block-heading">Automatyczne uruchamianie backupu za pomocą Harmonogramu zadań</h2>



<p class="wp-block-paragraph">Jeżeli ręczne uruchomienie skryptu zakończyło się powodzeniem, możemy przejść do automatyzacji.</p>



<p class="wp-block-paragraph">W Windows otwieramy Harmonogram zadań.</p>



<p class="wp-block-paragraph">Aby zachować porządek, możemy utworzyć osobny folder na nasze skrypty.</p>



<p class="wp-block-paragraph">W lewej części okna klikamy prawym przyciskiem myszy Biblioteka Harmonogramu zadań, wybieramy Nowy folder i nadajemy mu nazwę, na przykład:</p>



<p class="wp-block-paragraph"><code>Skrypty</code></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="621" src="https://eightbit.pl/wp-content/uploads/2026/08/5-1-1024x621.webp" alt="" class="wp-image-1690" srcset="https://eightbit.pl/wp-content/uploads/2026/08/5-1-1024x621.webp 1024w, https://eightbit.pl/wp-content/uploads/2026/08/5-1-300x182.webp 300w, https://eightbit.pl/wp-content/uploads/2026/08/5-1-768x466.webp 768w, https://eightbit.pl/wp-content/uploads/2026/08/5-1.webp 1300w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Następnie wchodzimy do utworzonego folderu i w środkowej części okna klikamy prawym przyciskiem myszy, a następnie wybieramy Utwórz zadanie.</p>



<p class="wp-block-paragraph">W polu Nazwa wpisujemy na przykład:</p>



<p class="wp-block-paragraph"><code>Automatyczna kopia SQL Server</code></p>



<p class="wp-block-paragraph">Warto zaznaczyć opcję:</p>



<p class="wp-block-paragraph"><code>Uruchom niezależnie od tego, czy użytkownik jest zalogowany</code></p>



<p class="wp-block-paragraph">oraz:</p>



<p class="wp-block-paragraph"><code>Uruchom z najwyższymi uprawnieniami</code></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="632" height="480" src="https://eightbit.pl/wp-content/uploads/2026/08/6.png" alt="" class="wp-image-1691" srcset="https://eightbit.pl/wp-content/uploads/2026/08/6.png 632w, https://eightbit.pl/wp-content/uploads/2026/08/6-300x228.png 300w" sizes="auto, (max-width: 632px) 100vw, 632px" /></figure>



<p class="wp-block-paragraph">W przypadku wykorzystania autoryzacji kontem Windows należy pamiętać, że zadanie będzie wykonywane z uprawnieniami konkretnego konta Windows. Konto to musi mieć odpowiednie uprawnienia do wykonania backupu SQL Server oraz możliwość uruchomienia programu <code>sqlcmd</code>. Microsoft zwraca na to uwagę w dokumentacji dotyczącej automatyzacji backupów SQL Server Express.</p>



<h2 class="wp-block-heading">Ustawienie harmonogramu wykonywania kopii</h2>



<p class="wp-block-paragraph">Przechodzimy do zakładki <strong><em>Wyzwalacze </em></strong>i klikamy <strong><em>Nowy</em></strong>.</p>



<p class="wp-block-paragraph">Tutaj możemy zdecydować, kiedy ma być uruchamiany skrypt.</p>



<p class="wp-block-paragraph">W przypadku codziennego backupu możemy wybrać opcję Codziennie i ustawić na przykład godzinę 21:00.</p>



<p class="wp-block-paragraph">Na dole okna upewniamy się, że zaznaczona jest opcja <em><strong>Włączono</strong></em>.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="616" height="516" src="https://eightbit.pl/wp-content/uploads/2026/08/7-1.webp" alt="" class="wp-image-1692" srcset="https://eightbit.pl/wp-content/uploads/2026/08/7-1.webp 616w, https://eightbit.pl/wp-content/uploads/2026/08/7-1-300x251.webp 300w" sizes="auto, (max-width: 616px) 100vw, 616px" /></figure>



<p class="wp-block-paragraph">Częstotliwość wykonywania kopii należy dopasować do charakteru firmy oraz ilości danych, które mogą zostać utracone w przypadku awarii.</p>



<p class="wp-block-paragraph">Dla niektórych firm wystarczająca będzie jedna kopia dziennie. W przypadku systemów, w których dane zmieniają się bardzo często, konieczne może być wykonywanie backupów znacznie częściej oraz zastosowanie dodatkowych mechanizmów ochrony danych.</p>



<h2 class="wp-block-heading">Dodanie skryptu BAT do zadania</h2>



<p class="wp-block-paragraph">Przechodzimy do zakładki <strong><em>Akcje </em></strong>i klikamy <em><strong>Nowa</strong></em>.</p>



<p class="wp-block-paragraph">W polu Akcja pozostawiamy:</p>



<p class="wp-block-paragraph"><code>Uruchom program</code></p>



<p class="wp-block-paragraph">W polu Program/skrypt wskazujemy przygotowany wcześniej plik:</p>



<p class="wp-block-paragraph"><code>SQLBackup.bat</code></p>



<p class="wp-block-paragraph">Następnie zatwierdzamy konfigurację przyciskiem OK.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="454" height="500" src="https://eightbit.pl/wp-content/uploads/2026/08/8-1.webp" alt="" class="wp-image-1693" srcset="https://eightbit.pl/wp-content/uploads/2026/08/8-1.webp 454w, https://eightbit.pl/wp-content/uploads/2026/08/8-1-272x300.webp 272w" sizes="auto, (max-width: 454px) 100vw, 454px" /></figure>



<p class="wp-block-paragraph">Od tej chwili Windows będzie uruchamiał przygotowany skrypt zgodnie z ustalonym harmonogramem.</p>



<h2 class="wp-block-heading">Warto wykonać test zadania</h2>



<p class="wp-block-paragraph">Po skonfigurowaniu Harmonogramu zadań nie warto czekać do następnego dnia, aby sprawdzić, czy wszystko działa.</p>



<p class="wp-block-paragraph">Najlepiej kliknąć na utworzone zadanie prawym przyciskiem myszy i wybrać Uruchom.</p>



<p class="wp-block-paragraph">Następnie sprawdzamy katalog backupu oraz plik logu.</p>



<p class="wp-block-paragraph">Powinniśmy zobaczyć utworzone pliki <code>.bak</code> odpowiadające bazom użytkownika znajdującym się na serwerze SQL.</p>



<p class="wp-block-paragraph">Jeżeli zadanie zakończyło się poprawnie, możemy również sprawdzić historię wykonania zadania w Harmonogramie zadań.</p>



<h2 class="wp-block-heading">Backup SQL Server to nie wszystko</h2>



<p class="wp-block-paragraph">Samo utworzenie kopii zapasowej nie oznacza jeszcze, że dane są odpowiednio zabezpieczone.</p>



<p class="wp-block-paragraph">Jeżeli wszystkie pliki znajdują się na tym samym serwerze co baza SQL Server, awaria serwera, uszkodzenie dysku, ransomware lub przypadkowe usunięcie danych może spowodować utratę zarówno danych produkcyjnych, jak i kopii.</p>



<p class="wp-block-paragraph">Dlatego w firmowej infrastrukturze IT warto zastosować kilka niezależnych poziomów zabezpieczenia.</p>



<p class="wp-block-paragraph">Kopia może być przechowywana na osobnym serwerze plików lub NAS, a dodatkowo kolejna kopia może być wysyłana do zewnętrznej lokalizacji lub chmury.</p>



<p class="wp-block-paragraph">Warto również okresowo sprawdzać możliwość odtworzenia danych. Backup, którego nigdy nie próbowaliśmy odtworzyć, nie daje pełnej pewności, że w sytuacji awaryjnej odzyskamy dane.</p>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p class="wp-block-paragraph">Automatyzacja kopii zapasowych SQL Server nie musi wymagać skomplikowanego oprogramowania. W przypadku SQL Server Express możemy wykorzystać SQL Server Management Studio do przygotowania środowiska, <code>sqlcmd</code> do wykonywania poleceń SQL oraz Harmonogram zadań Windows do automatycznego uruchamiania przygotowanego skryptu.</p>



<p class="wp-block-paragraph">Najważniejszym elementem całego rozwiązania nie jest jednak sam skrypt, ale odpowiednio zaprojektowana strategia backupu.</p>



<p class="wp-block-paragraph">Kopia powinna być wykonywana automatycznie, regularnie kontrolowana i przechowywana w miejscu niezależnym od podstawowego serwera. Od czasu do czasu warto również wykonać próbne odtworzenie bazy, aby upewnić się, że w przypadku awarii dane rzeczywiście będzie można odzyskać.</p>



<p class="wp-block-paragraph">W EIGHTBIT Informatyka zajmujemy się między innymi <a href="https://eightbit.pl/obsluga-informatyczna-jaworzno-sosnowiec-myslowice/" data-type="page" data-id="855">obsługą IT</a>, administracją serwerami, <a href="https://eightbit.pl/uslugi/bezpieczenstwo-danych/" data-type="page" data-id="863">bezpieczeństwem danych</a> oraz projektowaniem i wdrażaniem systemów <a href="https://eightbit.pl/uslugi/kopia-zapasowa-danych/" data-type="page" data-id="869">kopii zapasowych</a> dla firm. Prawidłowo zaprojektowany backup SQL Server jest jednym z podstawowych elementów bezpieczeństwa infrastruktury informatycznej przedsiębiorstwa.</p>
<p>Artykuł <a href="https://eightbit.pl/automatyczne-kopie-zapasowe-sql-server-jak-skonfigurowac-backup-krok-po-kroku/">Automatyczne kopie zapasowe SQL Server. Jak skonfigurować backup krok po kroku</a> pochodzi z serwisu <a href="https://eightbit.pl">EIGHTBIT</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
