Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Opisuje, jak działa wejście/wyjście systemu plików na FileTable.
Wprowadzenie do korzystania z API we/wy plików z użyciem FileTables
Oczekuje się, że podstawowe zastosowanie FileTables będzie obejmować korzystanie z systemu plików Windows oraz interfejsów API we/wy plików. Tabele plików obsługują nietransakcyjny dostęp za pośrednictwem bogatego zestawu dostępnych interfejsów API I/O plików.
Dostęp do interfejsu API we/wy plików zwykle rozpoczyna się od uzyskania logicznej ścieżki UNC dla pliku lub katalogu. Aplikacje mogą używać instrukcji Transact-SQL z GetFileNamespacePath (Transact-SQL) funkcji w celu uzyskania ścieżki logicznej dla pliku lub katalogu. Aby uzyskać więcej informacji, zobacz Praca z katalogami i ścieżkami w tabelach plików.
Następnie aplikacja używa tej ścieżki logicznej, aby uzyskać dojście do pliku lub katalogu i zrobić coś z obiektem. Ścieżka może zostać przekazana do dowolnej obsługiwanej funkcji interfejsu API systemu plików, takiej jak CreateFile() lub CreateDirectory(), w celu utworzenia lub otwarcia pliku i uzyskania dojścia. Uchwyt może następnie służyć do przesyłania strumieniowego danych, wyliczania lub organizowania katalogów, pobierania lub ustawiania atrybutów plików, usuwania plików lub katalogów itd.
Tworzenie plików i katalogów w tabeli FileTable
Plik lub katalog można utworzyć w tabeli FileTable, wywołując interfejsy API we/wy pliku, takie jak CreateFile lub CreateDirectory.
Obsługiwane są wszystkie flagi tworzenia, tryby udostępniania i tryby dostępu. Obejmuje to tworzenie, usuwanie i modyfikowanie pliku na miejscu. Obsługiwane są również aktualizacje przestrzeni nazw plików, tj. tworzenie/usuwanie katalogu, zmienianie nazwy i przenoszenie operacji.
Utworzenie nowego pliku lub katalogu odpowiada utworzeniu nowego wiersza w podstawowej tabeli FileTable.
W przypadku plików dane strumienia są przechowywane w kolumnie file_stream; dla katalogów ta kolumna ma wartość null.
W przypadku plików kolumna is_directory zawiera false. W przypadku katalogów ta kolumna zawiera true.
Współużytkowanie i współbieżność dostępu są wymuszane, gdy wiele współbieżnych operacji we/wy plików lub Transact-SQL wpływa na ten sam plik lub katalog w hierarchii.
Odczytywanie plików i katalogów w tabeli FileTable
Semantyka izolacji zatwierdzonego odczytu jest wymuszana w SQL Server dla wszystkich operacji we/wy na plikach na danych dotyczących strumieni i atrybutów.
Zapisywanie i aktualizowanie plików i katalogów w tabeli FileTable
Wszystkie operacje zapisu lub aktualizacji we/wy pliku w tabeli FileTable są nie transakcyjne. Oznacza to, że żadna transakcja programu SQL Server nie jest powiązana z tymi operacjami i nie są zapewniane żadne gwarancje ACID.
Wszystkie przesyłania strumieniowe oraz aktualizacje w miejscu dla tabeli FileTable są obsługiwane.
Aktualizacje danych FILESTREAM lub atrybutów za pośrednictwem interfejsów API wejścia/wyjścia plików skutkują aktualizacjami odpowiednich kolumn file_stream oraz atrybutów plików w tabeli FileTable.
Usuwanie plików i katalogów w tabeli FileTable
Semantyki interfejsu API we/wy plików systemu Windows są wymuszane, gdy usuwasz plik lub katalog.
Usunięcie katalogu kończy się niepowodzeniem, jeśli katalog zawiera pliki lub podkatalogi.
Usunięcie pliku lub katalogu powoduje usunięcie odpowiedniego wiersza z tabeli FileTable. Jest to odpowiednik usuwania wiersza za pomocą operacji Transact-SQL.
Obsługiwane operacje systemu plików
Tabele plików obsługują interfejsy API systemu plików związane z następującymi operacjami systemu plików:
Zarządzanie katalogami
Zarządzanie plikami
Tabele plików nie obsługują następujących operacji:
Zarządzanie dyskami
Zarządzanie woluminami
Transakcyjny system plików NTFS
Dodatkowe zagadnienia dotyczące dostępu we/wy plików do tabel plików
Używanie nazw sieci wirtualnych (VNN) z zawsze włączonymi grupami dostępności
Gdy baza danych zawierająca dane FILESTREAM lub FileTable należy do grupy dostępności Always On, wszelki dostęp do danych FILESTREAM lub FileTable za pośrednictwem interfejsów API systemu plików powinien używać nazw VNN zamiast nazw komputerów. Aby uzyskać więcej informacji, zobacz FILESTREAM i FileTable with Always On Availability Groups (SQL Server).
Aktualizacje częściowe
Uchwyt zapisywalny uzyskany dla danych FILESTREAM w tabeli FileTable przy użyciu GetFileNamespacePath (Transact-SQL) funkcji może służyć do tworzenia w miejscu, częściowych aktualizacji zawartości FILESTREAM. To zachowanie różni się od transakcyjnego dostępu FILESTREAM za pośrednictwem dojścia uzyskanego przez wywołanie OpenSQLFILESTREAM() i przekazanie jawnego kontekstu transakcji.
Semantyka transakcyjna
Gdy uzyskujesz dostęp do plików w tabeli FileTable przy użyciu interfejsów API we/wy plików, te operacje nie są skojarzone z żadnymi transakcjami użytkownika i mają następujące dodatkowe cechy:
Ponieważ niesfakturowany dostęp do danych FILESTREAM w tabeli FileTable nie jest skojarzony z żadną transakcją, nie ma żadnej specyficznej semantyki izolacji. Jednak program SQL Server może używać transakcji wewnętrznych do wymuszania semantyki blokowania lub współbieżności na danych FileTable. Wszystkie transakcje wewnętrzne tego typu są wykonywane z izolacją zatwierdzoną do odczytu.
Nie ma żadnych gwarancji ACID dla tych nieztransakcjonowanych operacji na danych FILESTREAM. Gwarancje spójności są podobne do tych dla aktualizacji plików wykonanych przez aplikacje w systemie plików.
Tych zmian nie można wycofać.
Jednak dostęp do kolumny FILESTREAM w tabeli FileTable można również uzyskać za pomocą transakcyjnego dostępu FILESTREAM, wywołując OpenSqlFileStream(). Ten rodzaj dostępu może być w pełni transakcyjny i będzie zgodny ze wszystkimi poziomami transakcyjnymi, które są obecnie obsługiwane.
Kontrola współbieżności
Program SQL Server wymusza kontrolę współbieżności dla dostępu FileTable między aplikacjami systemu plików oraz między aplikacjami systemu plików a aplikacjami Transact-SQL. Ta kontrolka współbieżności jest osiągana przez zastosowanie odpowiednich blokad w wierszach Tabeli plików.
Wyzwalaczy
Tworzenie, modyfikowanie lub usuwanie plików lub katalogów lub ich atrybutów za pośrednictwem systemu plików powoduje wykonywanie odpowiednich operacji wstawiania, aktualizowania lub usuwania w tabeli FileTable. Wszystkie skojarzone Transact-SQL wyzwalacze DML są wyzwalane w ramach tych operacji.
Funkcje systemu plików obsługiwane w tabelach plików
Zdolność | Obsługiwane | Komentarze |
---|---|---|
Oplocks | Tak | Istnieje obsługa blokad poziomów 2, Poziom 1, Batch i Filter. |
Rozszerzone Atrybuty | Nie | |
punkty ponownej analizy | Nie | |
Trwałe listy ACL | Nie | |
nazwanych strumieni | Nie | |
Pliki rozrzedzone | Tak | Rozrzedzanie może być ustawiane tylko na plikach i wpływa na przechowywanie strumienia danych. Ponieważ dane FILESTREAM są przechowywane na woluminach NTFS, funkcja FileTable obsługuje rozrzedłe pliki, przekazując żądania do systemu plików NTFS. |
kompresja | Tak | |
Szyfrowanie | Tak | |
TxF | Nie | |
identyfikatory plików | Nie | |
identyfikatory obiektów | Nie | |
łącza symboliczne | Nie | |
twarde linki | Nie | |
krótkie nazwy | Nie | |
powiadomienia o zmianie katalogu | Nie | |
blokowanie zakresu bajtów | Tak | Żądania blokowania zakresu bajtów są przekazywane do systemu plików NTFS. |
zamapowane pliki pamięci | Nie | |
anuluj I/O | Tak | |
Security | Nie | Zabezpieczenia na poziomie zasobu sieciowego Windows oraz na poziomie tabeli i kolumny w SQL Server są egzekwowane. |
dziennik USN | Nie | Zmiany metadanych w plikach i katalogach w tabeli FileTable to operacje DML w bazie danych programu SQL Server. W związku z tym są one rejestrowane w odpowiednim pliku dziennika bazy danych. Jednak nie są one rejestrowane w dzienniku USN systemu NTFS (oprócz przypadków, gdy zmienia się rozmiar). Funkcje śledzenia zmian programu SQL Server mogą służyć do przechwytywania podobnych informacji. |
Zobacz też
Ładowanie plików do FileTables
praca z katalogami i ścieżkami w tabelach plików
Dostęp do FileTables za pomocą Transact-SQL
FileTable DDL, funkcje, procedury składowane i widoki