Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Folder FILESTREAM

Termin Definicja
Folder FILESTREAM

Folder FILESTREAM to katalog systemowy przechowujący pliki zarządzane przez ten mechanizm bazy danych.

Rola folderu FILESTREAM w SQL Server

Folder FILESTREAM to fizyczny kontener danych używany przez Microsoft SQL Server do przechowywania dużych obiektów binarnych, takich jak dokumenty, obrazy, nagrania lub pliki archiwalne. Mechanizm FILESTREAM łączy transakcyjność relacyjnej bazy danych z zapisem zawartości pliku w systemie plików Windows. W tabeli przechowywany jest wiersz zawierający metadane oraz kolumnę typu varbinary(max) oznaczoną atrybutem FILESTREAM, natomiast właściwe dane binarne trafiają do kontenera FILESTREAM wskazanego podczas konfiguracji bazy.

Folder nie jest zwykłym katalogiem przeznaczonym do ręcznego porządkowania plików. SQL Server sam zarządza jego zawartością, nazwami wewnętrznych obiektów, powiązaniami z wierszami tabel oraz operacjami usuwania. W konsekwencji użytkownik systemu Windows nie powinien kopiować, przenosić, zmieniać nazw ani kasować elementów znajdujących się bezpośrednio w tym katalogu. Taka ingerencja może spowodować niespójność między bazą danych a systemem plików.

Jak kontener jest powiązany z bazą danych

Kontener FILESTREAM jest przypisany do specjalnej grupy plików FILESTREAM. Podczas tworzenia bazy danych grupa ta otrzymuje właściwość CONTAINS FILESTREAM oraz fizyczną ścieżkę katalogu. Przykładowa definicja może zawierać sekcję FILEGROUP FG_FS CONTAINS FILESTREAM i klauzulę FILESTREAM (NAME = ..., FILENAME = ...). Wskazana ścieżka musi prowadzić do katalogu przeznaczonego dla SQL Server; nie może być katalogiem używanym jako zwykły udział plików ani katalogiem zawierającym ręcznie zarządzane dane.

Poziom instancji również ma znaczenie. FILESTREAM musi być włączony w konfiguracji SQL Server oraz w ustawieniach usług systemu Windows. Sama obecność folderu na dysku nie oznacza jeszcze, że baza korzysta z tego mechanizmu. Informacje o kontenerze można sprawdzać w metadanych SQL Server, między innymi przez widoki katalogowe dotyczące plików i grup plików, takie jak sys.database_files oraz sys.filegroups. Do identyfikacji konkretnego wiersza używana jest kolumna ROWGUIDCOL z ograniczeniem UNIQUE, ponieważ SQL Server potrzebuje jednoznacznego identyfikatora rekordu przechowującego obiekt FILESTREAM.

Dostęp, integralność i kopie zapasowe

Dostęp do zawartości folderu powinien odbywać się za pośrednictwem SQL Server. Aplikacja może odczytywać dane przez standardowe zapytania dotyczące kolumny varbinary(max) albo korzystać z dostępu strumieniowego przez funkcję PathName() i interfejs OpenSqlFilestream. Ten drugi sposób wymaga odpowiedniego kontekstu transakcji oraz uprawnień i pozwala obsługiwać duże pliki bez traktowania całej zawartości jako jednego dużego bufora w aplikacji. Ścieżka zwracana przez PathName() jest logicznym odwołaniem udostępnianym przez SQL Server, a nie zaproszeniem do bezpośredniego operowania na fizycznej strukturze kontenera.

Operacje zapisu i usuwania są kontrolowane przez transakcje bazy. SQL Server może pozostawiać nieużywane fragmenty do czasu wykonania wewnętrznych procesów czyszczenia, dlatego liczba plików widocznych w kontenerze nie musi natychmiast odpowiadać liczbie aktualnych rekordów. Folder FILESTREAM należy obejmować procedurą kopii zapasowych SQL Server, a nie kopiować niezależnie metodą „plik po pliku”. Pełna kopia bazy obejmuje dane relacyjne oraz dane FILESTREAM, dzięki czemu przywrócenie zachowuje ich wzajemną spójność. Przy planowaniu miejsca na dysku trzeba uwzględnić rozmiar obiektów binarnych, kopie zapasowe, pliki tymczasowe i opóźnione czyszczenie usuniętych danych.

Diagnostyka problemów z folderem FILESTREAM

Nieprawidłowości związane z kontenerem mogą objawiać się błędami odczytu plików, nieudanymi zapisami, brakiem miejsca na woluminie albo problemami podczas tworzenia kopii zapasowej i przywracania bazy. Diagnostykę należy rozpocząć od sprawdzenia, czy usługa SQL Server działa z kontem mającym wymagane prawa do skonfigurowanego kontenera, czy funkcja FILESTREAM jest aktywna oraz czy ścieżka wskazana w metadanych nadal istnieje. Trzeba również skontrolować stan woluminu, dostępne miejsce, błędy systemu plików Windows i komunikaty zapisywane w dzienniku SQL Server.

Nie należy naprawiać problemu przez ręczne usuwanie katalogów, zmianę nazw podfolderów ani przenoszenie zawartości w Eksploratorze. Przeniesienie kontenera wymaga użycia udokumentowanej procedury SQL Server, obejmującej zmianę lokalizacji plików bazy i właściwe zatrzymanie lub odłączenie bazy zgodnie z wymaganiami konkretnej wersji silnika. Po awarii nośnika, utracie części danych albo podejrzeniu uszkodzenia kontenera właściwym źródłem odtworzenia są sprawdzone kopie zapasowe bazy. W środowisku produkcyjnym warto także okresowo testować przywracanie oraz porównywać faktyczne użycie przestrzeni z rozmiarem danych raportowanym przez SQL Server.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę