| Termin | Definicja |
|---|---|
| FILESTREAM a uprawnienia NTFS | FILESTREAM a uprawnienia NTFS opisuje interakcję między zabezpieczeniami bazy danych a uprawnieniami systemu plików Windows. Rozdzielenie uprawnień SQL Server i systemu plikówFILESTREAM w SQL Server łączy dwa różne modele zabezpieczeń. Uprawnienia SQL Server określają, kto może połączyć się z bazą danych, odczytać tabelę, wykonać zapytanie oraz zmienić wiersz zawierający kolumnę typu Użytkownik, który ma uprawnienie SELECT do tabeli, nie otrzymuje automatycznie prawa do otwierania plików w kontenerze przez Eksplorator Windows. Z kolei samo nadanie uprawnień NTFS do katalogu nie daje poprawnego dostępu do rekordów FILESTREAM ani nie zastępuje autoryzacji SQL Server. Kontrola dostępu musi więc uwzględniać zarówno tożsamość użytkownika w SQL Server, jak i sposób, w jaki aplikacja uzyskuje dostęp do danych binarnych. Kontener FILESTREAM i rola usługi SQL ServerKontener FILESTREAM wskazuje miejsce przechowywania danych binarnych zarządzanych przez konkretną bazę danych. SQL Server zapisuje w nim obiekty powiązane z wierszami tabel, utrzymuje ich relację z metadanymi oraz zapewnia spójność między tabelą a plikami. Nazwy i struktura wewnętrzna kontenera są elementem implementacji silnika, dlatego ręczne kopiowanie, przenoszenie, zmiana nazw lub kasowanie plików może doprowadzić do niespójności albo utraty możliwości odczytu danych. Podczas konfiguracji FILESTREAM SQL Server tworzy lub wykorzystuje określony obszar danych i nadaje wymagane prawa kontu usługi instancji. Zakres tych praw zależy od modelu uruchomienia usługi, między innymi od tego, czy SQL Server działa pod kontem domenowym, kontem wirtualnym czy innym kontem usługi. Zmiana konta usługi bez odpowiedniego przygotowania uprawnień może spowodować błędy dostępu do kontenera, problemy z uruchomieniem bazy albo nieudane operacje odczytu i zapisu. Uprawnień do kontenera nie należy naprawiać przez udostępnianie go wszystkim użytkownikom systemu. Transakcyjny dostęp przez OpenSqlFilestreamTypowy dostęp do wartości FILESTREAM z poziomu aplikacji może odbywać się przez zwykłe zapytanie T-SQL albo przez mechanizm strumieniowy Przy otwieraniu strumienia SQL Server weryfikuje kontekst dostępu, transakcję oraz uprawnienia użytkownika wynikające z operacji na tabeli. Jeżeli użytkownik nie może odczytać danego wiersza w SQL Server, prawidłowo skonstruowana ścieżka FILESTREAM nie powinna służyć do obejścia tej kontroli. Błąd może pojawić się także wtedy, gdy aplikacja działa pod innym kontem Windows niż zakładano, używa nieważnego tokenu transakcji albo próbuje korzystać z dostępu strumieniowego poza wymaganym cyklem transakcji. Diagnostyka błędów uprawnień FILESTREAMAnalizę problemu należy rozpocząć od ustalenia, którego rodzaju dostępu brakuje. Jeżeli nie działa zapytanie T-SQL, trzeba sprawdzić logowanie do instancji, użytkownika bazy danych, role oraz uprawnienia do tabeli i kolumny. Jeżeli zapytanie działa, lecz W praktyce warto także sprawdzić, czy baza jest online, czy kolumna ma właściwy typ i atrybut FILESTREAM, czy tabela zawiera wymagany identyfikator |