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

CREATE DATABASE z FILESTREAM

Termin Definicja
CREATE DATABASE z FILESTREAM

Polecenie CREATE DATABASE z opcją FILESTREAM tworzy bazę danych z obsługą przechowywania dużych, nieustrukturyzowanych obiektów jako plików systemowych.

CREATE DATABASE z FILESTREAM – czym jest ta instrukcja

CREATE DATABASE z opcją FILESTREAM służy do zdefiniowania bazy danych, w której duże dane binarne mogą być przechowywane poza standardowymi stronami danych, jako pliki zarządzane przez aparat SQL Server. W bazie pozostaje odwołanie do takiego obiektu, natomiast jego zawartość znajduje się w specjalnie przygotowanym obszarze systemu plików. Dzięki temu możliwe jest połączenie integralności relacyjnej bazy z właściwościami przechowywania dużych dokumentów, nagrań, obrazów, archiwów lub innych danych nieustrukturyzowanych.

Podczas tworzenia bazy określa się zwykłe pliki danych i dziennik transakcji, a także grupę plików oznaczoną jako FILESTREAM. Przykładowy schemat polecenia może wyglądać następująco:

CREATE DATABASE Dokumenty
ON PRIMARY
(
    NAME = Dokumenty_Data,
    FILENAME = 'D:\SQLData\Dokumenty.mdf'
),
FILEGROUP Dokumenty_FS CONTAINS FILESTREAM
(
    NAME = Dokumenty_FS_Data,
    FILENAME = 'D:\SQLFileStream\Dokumenty'
)
LOG ON
(
    NAME = Dokumenty_Log,
    FILENAME = 'D:\SQLLogs\Dokumenty.ldf'
);

W takim zapisie grupa Dokumenty_FS nie jest zwykłą grupą plików. Klauzula CONTAINS FILESTREAM wskazuje, że ma ona obsługiwać dane typu varbinary(max) przeznaczone do składowania strumieniowego. Ścieżka podana w atrybucie FILENAME wyznacza katalog kontenera FILESTREAM. Nie powinno się ręcznie umieszczać w nim plików ani zmieniać jego struktury, ponieważ zarządzanie zawartością należy do SQL Server.

Sama obecność grupy FILESTREAM w definicji bazy nie wystarcza do korzystania z całego mechanizmu. Wcześniej trzeba włączyć FILESTREAM na poziomie instancji, skonfigurować odpowiedni dostęp i upewnić się, że środowisko ma właściwe uprawnienia oraz dostęp do wskazanych lokalizacji. Przy projektowaniu tabeli wykorzystywany jest typ varbinary(max) FILESTREAM, zwykle razem z kolumną typu ROWGUIDCOL i unikatowym ograniczeniem. Dopiero taki układ pozwala przechowywać dane binarne w sposób zgodny z wymaganiami technologii.

Kontekst techniczny i porównanie z innymi sposobami przechowywania danych

Najważniejsza różnica między zwykłym varbinary(max) a wariantem z atrybutem FILESTREAM dotyczy miejsca i sposobu przechowywania większych obiektów. Przy klasycznym zapisie zawartość binarna pozostaje w obszarze danych bazy. Przy FILESTREAM metadane, relacje, transakcje i kontrola dostępu nadal są obsługiwane przez SQL Server, lecz sama zawartość może być przechowywana w systemie plików. Pozwala to korzystać z operacji strumieniowych i ograniczyć obciążenie związane z przenoszeniem bardzo dużych wartości przez standardowe mechanizmy odczytu.

FILESTREAM nie jest jednak zwykłym udziałem sieciowym ani niezależnym repozytorium plików. Pliki należą do konkretnej bazy, a ich spójność pozostaje związana z transakcjami oraz metadanymi SQL Server. Usunięcie lub przeniesienie pliku z poziomu systemu operacyjnego może doprowadzić do niespójności, dlatego administracja takim obszarem powinna odbywać się za pomocą narzędzi bazodanowych. Znaczenie ma również sposób wykonywania kopii zapasowych: zabezpieczenie powinno obejmować bazę wraz z danymi FILESTREAM, a nie tylko sam plik MDF lub wybrane katalogi.

W porównaniu z przechowywaniem ścieżek do plików w tabeli FILESTREAM zapewnia lepsze powiązanie obiektu z rekordem. Nie wystarczy przypadkowo skopiować dokumentu do katalogu i zapisać jego nazwy w kolumnie. Dane są objęte mechanizmami bazy, mogą być wersjonowane w ramach transakcji i pozostają związane z określonym rekordem. Z kolei w porównaniu z trzymaniem wszystkich obiektów jako zwykłe varbinary(max) rozwiązanie FILESTREAM może być korzystniejsze przy dużych plikach oraz aplikacjach wykonujących sekwencyjny odczyt lub zapis.

Warto odróżnić FILESTREAM od FileTable. FILESTREAM jest mechanizmem przechowywania danych binarnych używanym przez tabele projektowane przez administratora lub programistę. FileTable udostępnia dodatkową, gotową strukturę pozwalającą pracować z plikami i katalogami w bardziej zbliżony do systemu plików sposób. Oba rozwiązania korzystają z infrastruktury FILESTREAM, ale odpowiadają na inne potrzeby projektowe. Przy wyborze należy uwzględnić model danych, wymagania aplikacji, sposób nadawania uprawnień oraz procedury tworzenia kopii zapasowych.

Typowe problemy i błędy przy tworzeniu bazy z FILESTREAM

Częstym problemem jest próba wykonania polecenia bez wcześniejszego włączenia funkcji FILESTREAM w konfiguracji instancji. W takiej sytuacji sama poprawność składni CREATE DATABASE nie gwarantuje utworzenia bazy. Należy sprawdzić ustawienia instancji, dostęp do usług, poziom obsługi transakcyjnego FILESTREAM oraz zgodność konfiguracji z wersją używanego SQL Server. Jeżeli funkcja została wyłączona albo skonfigurowano tylko część wymaganych ustawień, komunikat błędu może wskazywać na brak obsługi kontenera lub nieprawidłowe właściwości grupy plików.

Drugą grupę trudności stanowią ścieżki. Katalog kontenera powinien być przeznaczony dla FILESTREAM i nie powinien być używany jako zwykły folder roboczy. Błędy mogą wynikać z braku uprawnień konta usługi, nieistniejącego dysku, niedostępnej lokalizacji albo wskazania ścieżki zajętej przez inną bazę. W środowisku, w którym występują różne woluminy, trzeba również brać pod uwagę ich dostępność po ponownym uruchomieniu oraz sposób monitorowania wolnego miejsca.

Problemy pojawiają się także wtedy, gdy utworzono grupę plików FILESTREAM, ale nie przygotowano tabeli w odpowiedni sposób. Kolumna binarna powinna mieć właściwy typ, a tabela przeznaczona do obsługi danych FILESTREAM musi spełniać wymagania dotyczące identyfikatora wiersza. Pominięcie ROWGUIDCOL, brak unikatowego indeksu albo próba użycia nieobsługiwanego typu danych może uniemożliwić zapis obiektów. Niekiedy błąd wynika również z nieprawidłowego użycia składni, na przykład z pomieszania zwykłej grupy plików z grupą oznaczoną CONTAINS FILESTREAM.

Nieprawidłowe założenia dotyczące wydajności również prowadzą do problemów. FILESTREAM nie naprawi źle zaprojektowanych zapytań, nie zastąpi indeksów i nie usunie ograniczeń wynikających z wolnego magazynu. Odczyty dużych obiektów powinny być projektowane z uwzględnieniem strumieniowania, czasu trwania transakcji i liczby jednoczesnych operacji. Długie transakcje mogą utrudniać zwalnianie zasobów, a źle dobrany sposób pobierania danych może powodować niepotrzebne obciążenie pamięci.

Do błędów eksploatacyjnych należy zaliczyć wykonywanie kopii zapasowej z pominięciem danych FILESTREAM, ręczne kasowanie plików z kontenera oraz przenoszenie katalogu bez zastosowania procedur administracyjnych. Przed zmianą lokalizacji, odtwarzaniem bazy lub migracją na inne środowisko należy sprawdzić dokumentację konkretnej wersji SQL Server, zależności między plikami i grupami plików oraz kompletność planu odtworzeniowego.

W jakich sytuacjach warto przekazać urządzenie do naprawy - CREATE DATABASE z FILESTREAM

Wsparcie techniczne może być potrzebne, gdy podczas tworzenia bazy pojawia się komunikat o niedostępnej funkcji FILESTREAM, nieprawidłowej ścieżce kontenera, braku uprawnień albo niespójności konfiguracji. Zgłoszenie jest uzasadnione również wtedy, gdy po migracji baza otwiera się poprawnie, lecz nie można zapisywać dużych obiektów, odczyt trwa nietypowo długo lub kopia zapasowa nie obejmuje oczekiwanego zakresu danych. Przed zmianami warto zabezpieczyć aktualną kopię bazy, zebrać pełną treść komunikatu i zanotować wersję SQL Server oraz systemu.

W praktyce diagnoza obejmuje sprawdzenie konfiguracji instancji, statusu usługi, uprawnień do wskazanych lokalizacji, struktury grup plików, definicji tabel i działania kopii zapasowych. Analizuje się również, czy problem dotyczy samego polecenia CREATE DATABASE, czy dopiero późniejszego zapisu danych do kolumny FILESTREAM. Takie rozdzielenie etapów ułatwia uniknięcie pochopnego odtwarzania bazy lub ręcznej ingerencji w katalog kontenera.

W przypadku problemów ze sprzętem wykorzystywanym do pracy z bazami, w tym z komputerem stacjonarnym lub laptopem, można skorzystać z pomocy firmy Warszawskie Pogotowie Komputerowe 24/7. Przed przekazaniem urządzenia warto przygotować opis objawów i informacje o wykonywanych ostatnio zmianach, ponieważ ułatwia to odtworzenie sytuacji oraz ocenę, czy źródłem problemu jest konfiguracja, nośnik danych, pamięć, system operacyjny czy samo oprogramowanie bazodanowe.

Nie powinno się usuwać katalogu FILESTREAM, zmieniać nazw plików ani ponownie tworzyć bazy na podstawie niepełnych danych tylko po to, aby pozbyć się komunikatu błędu. W razie podejrzenia uszkodzenia nośnika lub utraty dostępu do danych priorytetem jest ograniczenie dalszych zapisów i wykonanie bezpiecznej kopii tego, co pozostaje dostępne. Dopiero po zabezpieczeniu danych można przejść do naprawy konfiguracji, odtworzenia bazy albo zaplanowania migracji.

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