Udostępnij za pośrednictwem


Przegląd FILESTREAM

Jest dużo danych, który jest tworzony codziennie bez struktury danych, takich jak dokumenty tekstowe, obrazy i wideo.Bez struktury danych często znajduje się poza bazą danych, niezależnie od jego danych strukturalnych.To oddzielenie może spowodować, że dane zarządzanie złożonością.Lub, jeśli dane są skojarzone z składowania strukturalnego, możliwości przesyłania strumieniowego pliku i wydajność może być ograniczona.

FILESTREAM integrates the SQL Server Database Engine with an NTFS file system by storing varbinary(max) binary large object (BLOB) data as files on the file system.Transact-SQL statements can insert, update, query, search, and back up FILESTREAM data.Interfejsów systemu plików zapewniają strumieniowych dostępu do danych.

FILESTREAM korzysta z NT pamięci podręcznej do buforowania danych pliku.Pomaga to zmniejszyć wpływ tego FILESTREAM danych na Database Engine wydajność. The SQL Server pula buforów is not used; therefore, this memory is available for query processing.

Uwaga

FILESTREAM dane nie są szyfrowane, nawet wtedy, gdy włączone jest szyfrowanie danych przezroczyste.

Aby Przegląd, która pokazuje, jak używać FILESTREAM zobacz Getting Started with FILESTREAM Storage.

Kiedy należy używać FILESTREAM

W SQL ServerBLOBs mogą być standardowe varbinary(max) dane, które są przechowywane dane w tabelach lub FILESTREAM varbinary(max) obiekty, przechowujące dane w systemie plików. Rozmiar i wykorzystywanie danych decyduje o tym, czy należy używane przechowywania bazy danych lub magazynu systemu plików.Jeśli są spełnione następujące warunki, należy wziąć pod uwagę możliwość użycia FILESTREAM:

  • Obiekty, które są przechowywane są na ogół większy niż 1 MB.

  • Ważne jest szybki dostęp do odczytu.

  • W wypadku opracowywania aplikacji używających warstwa środkowa dla logiki aplikacji.

W przypadku mniejszych obiektów przechowywania varbinary(max) BLOBs bazy danych często zapewnia lepsze strumieniowych wydajność.

Magazyn FILESTREAM

FILESTREAM Magazyn jest implementowany jako varbinary(max) Kolumna, w którym dane są przechowywane jako bloków BLOB w systemie plików. Rozmiary bloków BLOB jest ograniczony tylko rozmiarem woluminu systemu plików.Standardowe varbinary(max) ograniczenia rozmiarów plików 2 GB nie ma zastosowania do bloków BLOB, które są przechowywane w systemie plików.

Aby określić, że kolumny powinny być przechowywane dane w systemie plików, należy określić atrybut FILESTREAM na varbinary(max) Kolumna. Powoduje to Database Engine do przechowywania wszystkich danych dla tej kolumna, w systemie plików, ale nie w plik bazy danych.

FILESTREAM dane muszą być przechowywane w filegroups FILESTREAM.grupa plików FILESTREAM jest specjalną grupa plików, zawierający katalogów systemu plików zamiast samych plików.Nazywa się tych katalogów systemu plików kontenerów danych.Interfejs pomiędzy są kontenerów danych Database Engine przechowywanie i przechowywania plików systemowych.

Korzystając z magazynu FILESTREAM, należy wziąć pod uwagę następujące kwestie:

  • Jeśli tabela zawiera kolumna FILESTREAM, każdy wiersz musi mieć identyfikatora niepustych wierszy unikatowe

  • Nie można zagnieżdżać FILESTREAM kontenerów danych.

  • Podczas korzystania z trybu pracy awaryjnej klastrowanie filegroups FILESTREAM musi znajdować się na zasoby dysku udostępnionym.

  • Filegroups FILESTREAM mogą być skompresowane woluminów.

Zintegrowane zabezpieczenia

W SQL ServerFILESTREAM dane są zabezpieczone, tak samo, jak inne dane, jest zabezpieczona: Udzielając uprawnień na poziomie tabela lub kolumna. Jeśli użytkownik ma uprawnienia do FILESTREAM kolumna w tabela, użytkownik może otwierać skojarzonych plików.

Uwaga

Szyfrowanie nie jest obsługiwane na FILESTREAM danych.

Tylko konta, pod którym SQL Server Uruchamia konta usługa ma udzielone uprawnienia NTFS do kontener FILESTREAM. Zaleca się, że nie inne konto im udzielać uprawnień w kontenerze danych.

Zintegrowane zarządzanie

Ponieważ FILESTREAM jest zaimplementowany jako varbinary(max) kolumna i zintegrowane bezpośrednio do Database Engine, większość SQL Server narzędzia zarządzania i funkcji działa bez modyfikacji FILESTREAM danych. Na przykład można używać wszystkich modeli kopii zapasowych i odzyskiwanie danych FILESTREAM i danych FILESTREAM jest wykonywana kopia zapasowa o strukturze danych w bazie danych.Jeśli nie chcesz wykonać kopię zapasową danych FILESTREAM z danych relacyjnych, umożliwia częściowej tworzyć kopię zapasową zapasowej wykluczyć filegroups FILESTREAM.

Podwójne modelu programowego dostępu do obiektu BLOB danych

Po dane są przechowywane kolumna FILESTREAM, dostęp do plików za pomocą Transact-SQL transakcje lub za pomocą interfejsów API Win32.

Program Access języka Transact-SQL

Za pomocą Transact-SQL, można wstawiać, aktualizowanie i usuwanie danych FILESTREAM:

  • Można wstępnie wypełnić pole FILESTREAM o wartości null, pusta wartość za pomocą operacji wstawiania lub stosunkowo krótki wewnętrznych danych.Jednak dużej ilości danych jest bardziej wydajne strumieniowo do pliku, który korzysta z interfejsów.

  • Podczas aktualizacji pole FILESTREAM modyfikujesz BLOB danych w systemie plików.Pole FILESTREAM jest ustawiona na wartość NULL, BLOB danych skojarzonych z pola są usuwane.Nie można używać Transact-SQL Aktualizacja pakietowego, zaimplementowany jako UPDATE**.** Write() do przeprowadzania aktualizacji częściowej do danych.

  • Usuwanie wiersza lub usunąć lub obciąć tabela zawierającą dane FILESTREAM powoduje usunięcie obiektu BLOB danych w systemie plików.

Dostępu do przesyłania strumieniowego systemu plików

Obsługę przesyłania strumieniowego działa w kontekście Win32 SQL Server transakcja. W obrębie transakcji można użyć funkcji FILESTREAM uzyskanie logiczne ścieżka systemu plików UNC pliku.Następnie należy użyć OpenSqlFilestream Interfejs API uzyskiwania dojścia do pliku. Ten uchwyt może następnie używane przez plik Win32, takich jak przesyłanie strumieniowe interfejsów, ReadFile() i WriteFile(), aby dostęp i aktualizowania pliku z systemu plików.

Ponieważ transakcyjnych operacji na plikach, nie można usunąć ani zmienić nazwy plików FILESTREAM za pomocą systemu plików.

Instrukcja modelu

Modele dostępu systemu plików FILESTREAM Transact-SQL Instrukcja przy użyciu pliku otwierania i zamykania. W instrukcja jest uruchamiany po dojścia do pliku jest otwierany i kończy się, gdy uchwyt jest zamknięty.Na przykład, gdy uchwyt zapisu jest zamknięte, to wszelkie możliwe po wyzwalacz, który jest zarejestrowany w tabela uruchamiany, jeśli instrukcja UPDATE zostało ukończone.

Magazyn obszaru nazw.

W FILESTREAM Database Engine Określa obszar nazw systemu plików fizycznych BLOB. Nowa funkcja wewnętrzna Ścieżka, zawiera logiczna ścieżka UNC BLOB, odpowiadające każdej komórka FILESTREAM w tabela.Aplikacja używa tej ścieżka logicznej uzyskiwania dojścia Win32 i operują na danych BLOB za pomocą zwykłego pliku system interfejsów.Funkcja zwraca wartość NULL, jeśli wartości kolumna FILESTREAM ma wartość NULL.

Dostęp do systemu plików transakcji

Nowa funkcja wewnętrzna GET_FILESTREAM_TRANSACTION_CONTEXT(), zawiera tokenu, który reprezentuje bieżącej transakcji, który jest skojarzony z sesja.Transakcji musi zostały uruchomione i jeszcze nie zostało przerwane lub zatwierdzone.Uzyskując tokenu aplikacji wiąże operacje przesyłania strumieniowego systemu plików FILESTREAM rozpoczęto transakcji.Funkcja zwraca wartość NULL przypadek pojawienia się żadna transakcja nie rozpoczęto jawnie.

Wszystkie dojścia do plików musi zostać zamknięty przed transakcji zatwierdza lub przerywa.Jeśli uchwyt pozostał otwarty poza zakres transakcji, dodatkowych odczytów przeciw uchwytu będzie powodować awarię; dodatkowe zapisy przeciw uchwytu powiedzie się, ale rzeczywiste dane nie zostaną zapisane na dysku.Podobnie jeśli do bazy danych lub wystąpienie Database Engine kończy niedziałający, wszystkie otwarte dojścia są unieważniane.

Trwałość transakcyjne

Z FILESTREAM na zatwierdzanie transakcji Database Engine zapewnia trwałości transakcji dla danych FILESTREAM BLOB, który zostanie zmodyfikowany z systemu plików, przesyłanie strumieniowe dostępu.

semantyka izolacji

Reguluje semantyka izolacji Database Engine poziomów izolacji transakcji. Tylko poziom izolacji popełnionych odczytu jest obsługiwany w przypadku dostępu do systemu plików.Powtarzalny operacje odczytu i można i migawka izolacji, są obsługiwane podczas dostępu do danych FILESTREAM przy użyciu Transact-SQL. odczyt zanieczyszczony nie jest obsługiwana.

Operacje otwarcia dostępu systemu plików nie poczekać, aż wszystkie blokady.Operacje otwarcia nie można natomiast natychmiast gdy one nie mogą uzyskać dostępu do danych z powodu izolacji transakcji.Jeśli operacja otwierania nie może kontynuować z powodu przekroczenia izolacji, z ERROR_SHARING_VIOLATION się nie powieść strumieniowych wywołania interfejsu API.

Aktualizacje częściowe

Aby zezwolić na aktualizacje częściowe dokonywane, aplikacja może wystawiać urządzenia kontroli ZR (FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT) do pobierania zawartości starych w pliku, który odwołuje się do otwartego dojścia.To spowoduje wyzwolenia kopię zawartości starych po stronie serwera.Aby zapewnić lepszą wydajność aplikacji i uniknąć pracy na potencjalne błędy przekroczenia limitu czas podczas pracy z bardzo dużymi plikami zaleca się użycie asynchronicznych We/Wy.

Jeśli FSCTL zostało wydane po dojście zostało zapisanych do, ostatniej operacji zapisu będzie trwało i wcześniejsze zapisze dane wprowadzone do uchwytu zostają utracone.

Zapis przez od klientów

Plik zdalny system dostępu do danych FILESTREAM jest włączona przez protokół blok komunikatów serwera (SMB).Jeśli klient jest zdalne, operacje zapisu nie są buforowane przez po stronie klienta.Operacje zapisu będzie zawsze przesyłane do serwera.Dane mogą być buforowane po stronie serwera.Firma Microsoft zaleca, aby aplikacje uruchomione na klientach zdalnych małe skonsolidować zapisu wprowadź mniejszą liczbę operacji zapisu operacje, korzystając z danych o większym rozmiarze.

Tworzenie widoków mapowanych w pamięci (We/Wy mapowane pamięci) za pomocą uchwytu FILESTREAM nie jest obsługiwana.Jeśli mapowanie pamięci jest używany w przypadku danych FILESTREAM Database Engine Nie można zagwarantować spójności i trwałość danych i integralność bazy danych.