| Termin | Definicja |
|---|---|
| maksymalny rozmiar bazy danych | Maksymalny rozmiar bazy danych to ograniczenie zależne od edycji serwera — np. 10 GB w wersji Express. Co oznacza maksymalny rozmiar bazy danych w SQL ServerMaksymalny rozmiar bazy danych w SQL Server jest limitem określonym przez edycję oraz wersję silnika. Nie oznacza on pojemności całego serwera ani łącznego miejsca zajmowanego przez wszystkie bazy na instancji. Jest to górna granica, do której może rozrosnąć się konkretna baza danych obsługiwana przez daną edycję SQL Server. Dlatego dwie instancje zainstalowane na tym samym komputerze mogą mieć różne możliwości, jeżeli działają w innych edycjach lub wersjach produktu. W SQL Server Express 2019 i SQL Server Express 2022 maksymalny rozmiar relacyjnej bazy danych wynosi 10 GB na bazę. W SQL Server Express 2025 limit zwiększono do 50 GB. Warto więc zawsze sprawdzić dokładną wersję instancji, ponieważ samo określenie „SQL Server Express” nie wystarcza do ustalenia obowiązującego limitu. Edycje Standard, Enterprise i Developer mają inne limity pojemnościowe; w przypadku SQL Server Developer limit rozmiaru bazy odpowiada możliwościom silnika, ale edycja ta jest przeznaczona do celów deweloperskich i testowych, a nie do produkcyjnego wdrażania aplikacji. Limit edycji a pliki MDF, NDF i LDFSQL Server przechowuje dane przede wszystkim w plikach danych, zwykle z rozszerzeniem .mdf oraz opcjonalnie .ndf. Plik .ldf jest plikiem dziennika transakcji i służy do odtwarzania spójności operacji po awarii oraz obsługi mechanizmów odzyskiwania. Limit maksymalnego rozmiaru relacyjnej bazy danych w SQL Server Express dotyczy danych relacyjnych, dlatego nie należy bezpośrednio utożsamiać go z sumą rozmiarów wszystkich plików widocznych na dysku. Rozmiar dziennika transakcji może zmieniać się niezależnie od ilości danych, między innymi w zależności od modelu odzyskiwania i długości trwających transakcji. Na rzeczywiste zużycie przestrzeni wpływa także wolne miejsce wewnątrz plików danych, ustawienie autowzrostu oraz wartość MAXSIZE. Baza może więc mieć plik danych o rozmiarze zbliżonym do limitu, ale nadal zawierać niewykorzystane strony przeznaczone na nowe rekordy. Z drugiej strony ustawienie zbyt niskiej wartości MAXSIZE może zatrzymać wzrost pliku wcześniej niż pozwala na to limit edycji. Samo zwiększenie wolnego miejsca na partycji nie usuwa ograniczenia narzuconego przez SQL Server Express. Jak rozpoznać osiągnięcie granicy pojemnościGdy baza w SQL Server Express zbliża się do maksymalnego rozmiaru, operacje wymagające przydzielenia nowych stron danych mogą zakończyć się błędem. Dotyczy to między innymi dodawania rekordów, rozbudowy indeksów, tworzenia nowych indeksów oraz importu większych zbiorów danych. Objawem może być poprawnie działająca aplikacja, która nagle przestaje zapisywać nowe informacje, mimo że system Windows nadal pokazuje wolne miejsce na dysku. Przyczyną nie musi być awaria nośnika ani brak uprawnień, lecz przekroczenie limitu instancji. Podczas sprawdzania problemu należy rozróżnić trzy wartości: zajętość danych w bazie, fizyczny rozmiar plików oraz limit wynikający z edycji SQL Server. Informacje o plikach można odczytać w SQL Server Management Studio w właściwościach bazy, w sekcji dotyczącej plików. Przydatne jest również zapytanie T-SQL wykorzystujące widok sys.database_files, który pokazuje między innymi nazwę pliku, typ pliku, bieżący rozmiar i ustawienie maksymalnego wzrostu. Do ustalenia edycji i wersji instancji można użyć SERVERPROPERTY, na przykład właściwości Edition oraz ProductVersion. Przed migracją lub odtworzeniem kopii zapasowej trzeba sprawdzić rozmiar bazy docelowej oraz limit serwera, na którym ma zostać wykonana operacja. Kopia wykonana z większej edycji SQL Server może nie zostać odtworzona na starszej edycji Express, jeżeli wynikowy rozmiar danych przekracza jej limit. Usunięcie części rekordów po nieudanej operacji nie zawsze wystarczy, ponieważ ograniczenie może zostać przekroczone już podczas tworzenia lub powiększania pliku bazy. Planowanie pojemności i bezpieczne działania serwisowePrzy projektowaniu aplikacji korzystającej z SQL Server Express należy oszacować tempo przyrostu danych, rozmiar indeksów, częstotliwość importów oraz miejsce potrzebne na operacje konserwacyjne. Limit 10 GB w SQL Server Express 2019 i 2022 albo 50 GB w SQL Server Express 2025 dotyczy pojedynczej bazy, ale aplikacja może używać kilku baz na jednej instancji. Nie oznacza to jednak, że wolno pominąć zapas przestrzeni dyskowej: kopie zapasowe, pliki tymczasowe, dzienniki oraz inne bazy również zajmują miejsce i mogą doprowadzić do niezależnego braku wolnej przestrzeni. Jeżeli baza zbliża się do granicy, należy najpierw wykonać sprawdzoną kopię zapasową i ustalić, które dane rzeczywiście zajmują miejsce. Dopiero potem można rozważyć archiwizację zgodną z logiką aplikacji, usunięcie niepotrzebnych danych, przebudowę planu przechowywania albo migrację do edycji SQL Server z wyższym limitem. Kompresja kopii zapasowej nie zmniejsza rozmiaru bazy widzianego przez silnik, ponieważ zmienia rozmiar pliku backupu, a nie pojemność plików danych. Również zmniejszanie pliku przez DBCC SHRINKDATABASE nie jest uniwersalnym sposobem zarządzania pojemnością i może prowadzić do fragmentacji indeksów. W praktyce diagnostyka powinna obejmować wersję i edycję SQL Server, rozmiary plików danych, ustawienia autowzrostu, wolne miejsce na woluminie oraz komunikat zapisany w dzienniku błędów. Takie rozdzielenie pozwala odróżnić limit licencyjno-techniczny od problemu z konfiguracją pliku lub dyskiem. W przypadku środowiska serwerowego naprawa powinna być poprzedzona zabezpieczeniem kopii zapasowych i potwierdzeniem, że planowana zmiana nie naruszy wymagań aplikacji. |