Omówienie FILESTREAM

Dużo danych jest niestrukturalne, takie jak dokumenty tekstowe, obrazy i wideo.Bez struktury danych często znajduje się poza bazą danych, niezależnie od jego danych strukturalnych.Podział ten może spowodować danych złożoność zarządzania.Lub jeśli dane skojarzone z składowania strukturalnego, możliwości przesyłania strumieniowego pliku i wydajność może być ograniczony.

Integruje FILESTREAM Aparat baz danych programu SQL Server z systemu plików NTFS w systemie przez przechowywanie plików varbinary(max) danych do duży obiekt binarny (BLOB) jako pliki w systemie plików. Transact-SQL instrukcji można wstawiać, aktualizacja, kwerenda, wyszukiwanie, i tworzyć kopię zapasową danych FILESTREAM.Interfejsy systemu Win32 pliku zapewniają strumieniowych dostępu do danych.

Buforowanie danych pliku FILESTREAM używa pamięci podręcznej systemu NT.Ułatwia to zmniejszenie wpływu tego FILESTREAM danych na Aparat baz danych wydajności. SQL Server pula buforów nie jest używany; dlatego tej pamięci jest dostępny dla przetwarzania kwerendy.

Ostrzeżenie

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

Aby instruktażu, która pokazuje, jak używać FILESTREAM, zobacz Wprowadzenie do magazynu FILESTREAM.

Kiedy używać FILESTREAM

W SQL Server, bloków BLOB mogą być standardowe varbinary(max) danych, który przechowuje dane w tabelach, lub FILESTREAM varbinary(max) obiektów, które przechowują dane w systemie plików.Rozmiar i wykorzystywanie danych określa, czy należy używać bazy danych, składowania lub przechowywania systemu plików.Jeżeli następujące warunki są spełnione, należy rozważyć użycie FILESTREAM:

  • Obiekty, które są przechowywane są średnio większy niż 1 MB.

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

  • Opracowywania aplikacji używających warstwa środkowa logiki aplikacji.

W przypadku mniejszych obiektów przechowywania varbinary(max) bloków BLOB w bazie danych często zapewnia lepsze strumieniowych wydajności.

Magazyn FILESTREAM

Magazyn FILESTREAM jest zaimplementowany jako varbinary(max) kolumna, w której dane są przechowywane jako liczba bloków BLOB w systemie plików.Rozmiary obiektów blob jest ograniczona tylko przez rozmiar woluminu systemu plików.Standard varbinary(max) ograniczenia rozmiarów plików 2 GB nie stosuje się do obiektów blob, które są przechowywane w systemie plików.

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

FILESTREAM dane muszą być przechowywane w aplikacjami FILESTREAM.Grupa plików FILESTREAM jest specjalna grupa plików zawiera katalogów systemu plików zamiast samych plików.Tych katalogów systemu plików są nazywane kontenerów danych.Kontenery danych są interfejs między Aparat baz danych pamięci masowej i plików systemu pamięci masowej.

Gdy jest używany Magazyn FILESTREAM, należy rozważyć następujące kwestie:

  • Jeśli tabela zawiera kolumna FILESTREAM, każdy wiersz musi mieć niepustych wierszy unikatowy identyfikator.

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

  • Używając klastrowanie pracy awaryjnej, aplikacjami FILESTREAM musi być na zasoby dysku udostępnionym.

  • Na woluminy skompresowane mogą być aplikacjami FILESTREAM.

Zintegrowane zabezpieczenia

W SQL Server, FILESTREAM danych jest zabezpieczona, podobnie jak inne dane są zabezpieczone: Przyznając uprawnienia na poziomie tabela lub kolumna.Jeśli użytkownik ma uprawnienie do FILESTREAM kolumna w tabela, użytkownik może otwierać skojarzonych plików.

Ostrzeżenie

Szyfrowanie nie jest obsługiwane na danych FILESTREAM.

Tylko konta, pod którym SQL Server działa konto usługa jest uprawnienia NTFS do kontener FILESTREAM.Zaleca się, że żadne inne konto przyznawane uprawnienia kontener danych.

Zintegrowane zarządzanie

Ponieważ FILESTREAM jest zaimplementowany jako varbinary(max) kolumna i zintegrowana bezpośrednio do Aparat baz danych, większość SQL Server funkcji i narzędzi do zarządzania działa bez modyfikacji danych FILESTREAM.Na przykład można używać wszystkich kopia zapasowa i modeli odzyskiwanie danych FILESTREAM i zapasowe danych FILESTREAM strukturze danych w bazie danych.Jeśli nie chcesz kopię zapasową danych FILESTREAM w relacyjnej bazie danych, można użyć częściowa kopia zapasowa do wykluczenia z aplikacjami FILESTREAM.

Podwójne Model programowania dostępu do obiektu BLOB danych

Po przechowywać dane kolumna FILESTREAM można uzyskać dostępu do plików przy użyciu Transact-SQL transakcji lub za pomocą interfejsów API Win32.

Dostęp Transact-SQL

Za pomocą Transact-SQL, wstawianie, aktualizowanie i usuwanie danych FILESTREAM:

  • Można użyć operacji wstawiania wstępnie pole FILESTREAM z wartością null wartość pusta lub stosunkowo krótkie dane wewnętrzne.Jednak dużą ilość danych jest bardziej wydajne strumieniowo do pliku, który używa interfejsów Win32.

  • Podczas aktualizacji pole FILESTREAM zmodyfikowaniu obiektu BLOB danych w systemie plików.Kiedy pole FILESTREAM jest zestaw wartość null, usunięcie danych typu BLOB, powiązane z polem.Nie można używać Transact-SQL Aktualizacja pakietowego implementowane jako aktualizacja**.**Write() do przeprowadzania aktualizacji częściowej danych.

  • Podczas usuwania wiersza lub usuwania oraz obciąć tabela zawierającą dane FILESTREAM usunięciu obiektu BLOB danych w systemie plików.

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

Win32 obsługę przesyłania strumieniowego działa w kontekście SQL Server transakcji.W obrębie transakcji można użyć funkcji FILESTREAM uzyskania logiczne ścieżka systemu plików UNC na pliku.Następnie użyj OpenSqlFilestream API uzyskiwania uchwytu pliku.Ten uchwyt mogą być następnie używane przez pliku Win32, takich jak strumieniowe interfejsów, ReadFile() i WriteFile(), dostęp do aktualizacji pliku z systemu plików.

Ponieważ operacje na plikach transakcyjnych, nie można usunąć ani nazwy plików FILESTREAM za pośrednictwem systemu plików.

Wzór wyciągu

Modele dostępu systemu plików FILESTREAM Transact-SQL instrukcja przy użyciu otwarty plik i Zamknij.Instrukcja uruchamia kiedy dojście do pliku jest otwarty i kończy po zamknięciu uchwyt.Na przykład gdy uchwyt zapisu jest zamknięte, wszelkie możliwe po wyzwalacz, który jest zarejestrowany na tabela uruchamiany, jeśli instrukcja UPDATE zostało ukończone.

Magazyn obszaru nazw.

W FILESTREAM Aparat baz danych kontroluje nazw systemu plików fizycznych BLOB.Nowa funkcja wewnętrzne Nazwa_ścieżki, stanowi logiczne ścieżka UNC BLOB, odpowiadająca każdej komórka FILESTREAM w tabela.Aplikacja używa tej ścieżka logicznej uzyskiwania dojścia Win32 i operują na danych typu BLOB za pomocą regularnych interfejsów systemu pliku Win32.Funkcja zwraca wartość NULL, jeśli kolumna FILESTREAM wartość NULL.

Transakcyjnego dostępu do systemu plików

Nowa funkcja wewnętrzne GET_FILESTREAM_TRANSACTION_CONTEXT(), zawiera tokenu, który reprezentuje bieżącej transakcji, którym sesja jest skojarzona.Transakcja musi zostały rozpoczęte i dotychczas przerwane lub popełnionych.Uzyskując token, aplikacja wiąże operacje przesyłania strumieniowego systemu plików FILESTREAM rozpoczętych transakcji.Funkcja zwraca wartość NULL w przypadek nie jawnie rozpoczętych transakcji.

Wszystkie dojścia do pliku muszą być zamknięte przed transakcji zatwierdza lub przerywa.Jeśli uchwyt pozostał otwarty poza zakres transakcji, dodatkowych odczytów przeciwko uchwytu spowoduje błąd; dodatkowe zapisy przeciwko uchwyt kończy się pomyślnie, ale dane nie zostaną zapisane na dysku.Podobnie jeśli bazy danych lub wystąpienie Aparat baz danych przebiega niedziałający, wszystkie otwarte dojścia są unieważniane.

Transakcyjne trwałości

Z FILESTREAM po zatwierdzeniu zatwierdzanie Aparat baz danych gwarantuje trwałości zatwierdzanie dla danych typu BLOB FILESTREAM, który zostanie zmodyfikowany z pliku systemu przesyłania strumieniowego dostępu.

Write-Through zdalnych klientów

Plik zdalny dostęp do systemu danych FILESTREAM jest włączona przez protokół bloku komunikatów serwera (SMB).W przypadku zdalnego klient operacji zapisu nie są buforowane przez po stronie klient.Operacje zapisu będzie zawsze wysyłane do serwera.Dane mogą być buforowane po stronie serwera.Zaleca się małe konsolidację aplikacji uruchomionych na zdalnych klientów zapisu wprowadź mniejszą liczbę operacji zapisu operacji przy użyciu większy rozmiar danych.

Tworzenie widoków mapowanych w pamięci (mapowanych w pamięci We/Wy) przy użyciu uchwytu FILESTREAM nie jest obsługiwane.Jeśli jest używane mapowanie pamięci dla danych FILESTREAM Aparat baz danych nie może zagwarantować spójność i trwałości danych lub integralność bazy danych.

Windows Logo certyfikacji

Sterownik FILESTREAM RsFx jest certyfikowany dla Windows Server 2008 R2.Aby uzyskać więcej informacji i pobierania pliku wykazu, zobacz SQL Server 2008 R2 FileStream sterownika Windows Logo certyfikacji w Centrum pobierania firmy Microsoft.