| Termin | Definicja |
|---|---|
| FILESTREAM z SSIS | FILESTREAM z SSIS opisuje sposób wykorzystania tego mechanizmu w pakietach usług integracyjnych SQL Server. Rola FILESTREAM w architekturze SQL ServerFILESTREAM to funkcja konkretnego silnika Microsoft SQL Server, która pozwala przechowywać dane binarne powiązane z wierszem tabeli w systemie plików NTFS, przy zachowaniu kontroli transakcyjnej bazy danych. W tabeli kolumna przeznaczona do takiego przechowywania ma typ Do utworzenia tabeli z kolumną FILESTREAM potrzebny jest również klucz Przenoszenie obiektów FILESTREAM w pakietach SSISSSIS, czyli SQL Server Integration Services, może uczestniczyć w przepływie danych zawierających wartości z kolumn FILESTREAM. Pakiet może pobierać rekordy przez komponent OLE DB Source, ADO.NET Source albo zapytanie wykonane w zadaniu SQL, a następnie przekazywać zawartość binarną do kolejnego komponentu. W typowym przepływie kolumna jest traktowana jako dane binarne, na przykład jako typ SSIS Ważne jest rozróżnienie pomiędzy odczytem wartości binarnej przez interfejs SQL a bezpośrednim strumieniowaniem pliku z systemu plików. Zwykły komponent źródłowy SSIS może pobrać zawartość przez zapytanie SQL i umieścić ją w buforze przepływu danych. W takim wariancie pakiet korzysta z warstwy dostępu do SQL Server, a nie bezpośrednio z natywnego strumienia Win32 FILESTREAM. Przy dużych obiektach może to zwiększyć zużycie pamięci, czas transferu i liczbę operacji kopiowania. Jeżeli wymagane jest natywne strumieniowanie, aplikacja lub własny komponent SSIS może użyć interfejsu Projekt przepływu danych i obsługa transakcjiPakiet SSIS zapisujący dane do tabeli FILESTREAM musi dostarczyć zarówno zawartość binarną, jak i poprawny identyfikator wiersza. W praktyce przepływ może obejmować źródło danych, transformację normalizującą typ kolumny, komponent docelowy SQL Server oraz obsługę błędnych rekordów. Mapowanie powinno zachować pełną wartość binarną; konwersja do tekstu, obcięcie bufora albo niejawna zmiana kodowania może uszkodzić zawartość pliku. Przy operacjach wymagających spójności pomiędzy metadanymi i plikiem trzeba uwzględnić zakres transakcji. Sam zapis do kolumny FILESTREAM przez standardowy komponent docelowy może być wystarczający dla prostego ładowania danych, lecz scenariusz natywnego strumieniowania wymaga świadomego zarządzania transakcją i tokenem FILESTREAM. Jeżeli pakiet wykonuje kilka powiązanych operacji, należy ustalić, czy powinny zostać zatwierdzone razem, czy też mogą być niezależnymi partiami. Wydajność zależy od rozmiaru obiektów, wielkości bufora SSIS, ustawień punktów kontrolnych, liczby równoległych ścieżek oraz sposobu użycia dostawcy danych. Dla dużych plików korzystniejsze może być ograniczenie liczby kopii w pamięci i zastosowanie komponentu niestandardowego korzystającego z natywnego strumienia. Dla mniejszych wartości prostszy przepływ przez zapytanie SQL bywa łatwiejszy do monitorowania. W obu przypadkach trzeba ustalić sposób ponawiania błędnych rekordów, aby ponowne uruchomienie nie tworzyło duplikatów. Diagnostyka problemów FILESTREAM z SSISPodczas diagnozowania błędów należy najpierw sprawdzić, czy FILESTREAM jest włączony na instancji SQL Server i w bazie, czy baza ma grupę plików FILESTREAM oraz czy tabela spełnia wymagania dotyczące kolumny W scenariuszu wykorzystującym W środowisku produkcyjnym warto rejestrować identyfikator rekordu, rozmiar przesyłanego obiektu, czas odczytu i zapisu, liczbę ponowień oraz komunikat dostawcy. Takie dane pozwalają odróżnić błąd konfiguracji SQL Server od przeciążenia bufora SSIS, problemu z transakcją albo niezgodności sterownika. Kontrola po zakończeniu pakietu powinna porównywać liczbę rekordów, sumy rozmiarów i ewentualnie skróty plików, ponieważ sam status zakończenia zadania nie potwierdza integralności każdej wartości FILESTREAM. |