| Termin | Definicja |
|---|---|
| NTFS i FILESTREAM | FILESTREAM wymaga systemu plików NTFS lub ReFS, ponieważ korzysta z jego mechanizmów przechowywania dużych obiektów. NTFS jako podstawa przechowywania danych FILESTREAMNTFS, czyli New Technology File System, jest systemem plików używanym przez system Windows do organizowania danych na woluminach dyskowych. FILESTREAM w Microsoft SQL Server wykorzystuje mechanizmy systemu plików do przechowywania dużych wartości binarnych, takich jak dokumenty, obrazy, nagrania lub inne pliki zapisane w kolumnach typu System plików nie jest w tym rozwiązaniu niezależnym magazynem plików dostępnym do dowolnego użycia. Kontener FILESTREAM należy do konkretnej bazy danych i jest wskazywany przez grupę plików FILESTREAM. SQL Server sam określa strukturę katalogów oraz nazwy przechowywanych obiektów. Bezpośrednia zmiana, przenoszenie albo usuwanie plików w tym kontenerze z poziomu Eksploratora Windows może naruszyć spójność bazy danych, dlatego dostęp do danych powinien odbywać się przez SQL Server albo przez obsługiwany mechanizm strumieniowania FILESTREAM. ReFS, NTFS i wymagania kontenera danychFILESTREAM wymaga systemu plików obsługującego mechanizmy potrzebne do przechowywania dużych obiektów oraz współpracy z SQL Server. W zależności od wersji SQL Server i użytej konfiguracji kontener FILESTREAM może być umieszczony na woluminie NTFS albo ReFS. Nie oznacza to jednak, że każdy wolumin dostępny w Windows będzie odpowiedni. Znaczenie mają również uprawnienia konta usługi SQL Server, typ instalacji, konfiguracja grupy plików oraz zgodność konkretnej wersji silnika z wybranym systemem plików. NTFS oferuje dojrzałe mechanizmy uprawnień, dziennika zmian, kontroli dostępu i obsługi dużych woluminów, dlatego jest najczęściej spotykanym systemem plików w środowiskach z FILESTREAM. ReFS został zaprojektowany z naciskiem na odporność systemu plików i integralność danych, ale jego przydatność trzeba oceniać zgodnie z dokumentacją danej wersji SQL Server oraz systemu Windows. Samo sformatowanie dysku w NTFS lub ReFS nie wystarcza do utworzenia działającego magazynu FILESTREAM; konfigurację wykonuje się w ustawieniach instancji SQL Server, a następnie w definicji bazy danych. Spójność transakcyjna a dostęp do plikówNajważniejszą cechą FILESTREAM jest połączenie dostępu bazodanowego z przechowywaniem obiektu w systemie plików. Rekord zawiera odwołanie do danych, natomiast sama zawartość może być obsługiwana jako strumień. Operacje zapisu i usuwania są objęte logiką transakcji SQL Server, dzięki czemu zmiana rekordu oraz odpowiadającego mu obiektu FILESTREAM nie powinna być traktowana jako dwa niezależne działania. W przypadku wycofania transakcji silnik może anulować również zmianę dotyczącą danych binarnych. Do odczytu strumieniowego używany jest specjalny dostęp FILESTREAM, oparty na transakcji SQL Server i uchwycie zwracanym dla obiektu binarnego. Aplikacja może odczytywać lub zapisywać dane przez interfejs systemu Windows, ale musi wcześniej uzyskać prawidłowy kontekst transakcji. Takie rozwiązanie ogranicza narzut związany z przenoszeniem bardzo dużych wartości przez zwykłe operacje tabelaryczne, a jednocześnie zachowuje kontrolę SQL Server nad rekordem, uprawnieniami i stanem transakcji. Rozpoznawanie problemów z NTFS i FILESTREAMProblemy z FILESTREAM mogą wynikać z nieprawidłowo przygotowanego woluminu, braku uprawnień konta usługi, wyłączonej funkcji FILESTREAM w konfiguracji instancji albo błędnej definicji grupy plików. Podczas sprawdzania należy potwierdzić, czy baza ma grupę plików FILESTREAM, czy wskazany kontener znajduje się na obsługiwanym woluminie oraz czy ścieżka nie została zmieniona poza SQL Server. Warto również sprawdzić komunikaty silnika, stan usługi SQL Server i dostępność woluminu po ponownym uruchomieniu systemu. Nie należy diagnozować takiego magazynu wyłącznie przez przeglądanie katalogów w Eksploratorze Windows. Widoczna struktura plików nie opisuje kompletnego stanu danych, a ręczne porządkowanie zawartości może pogłębić problem. Prawidłowa analiza obejmuje metadane bazy, konfigurację FILESTREAM, logi SQL Server, uprawnienia systemu plików oraz zależność między rekordami i obiektami binarnymi. Przy podejrzeniu uszkodzenia należy najpierw zabezpieczyć kopię bazy i nie wykonywać ręcznych operacji na kontenerze, dopóki nie zostanie ustalona przyczyna. |