Udostępnij przez


Zadanie przepływu danych

Dotyczy:SQL Server SSIS Integration Runtime w ramach usługi Azure Data Factory

Zadanie przepływu danych hermetyzuje silnik przepływu danych, który przenosi dane między źródłami i miejscami docelowymi, i umożliwia użytkownikowi przekształcanie, czyszczenie i modyfikowanie danych podczas ich przenoszenia. Dodanie zadania przepływu danych do przepływu sterowania pakietem umożliwia pakietowi wyodrębnianie, przekształcanie i ładowanie danych.

Przepływ danych składa się z co najmniej jednego składnika przepływu danych, ale zazwyczaj jest to zestaw połączonych składników przepływu danych: źródła, które wyodrębniają dane; przekształcenia modyfikujące, trasujące lub sumujące dane; i miejsca docelowe ładujące dane.

Podczas wykonywania zadanie przepływu danych tworzy plan wykonania z przepływu danych, a silnik przepływu danych wykonuje plan. Można utworzyć zadanie przepływu danych, które nie ma przepływu danych, ale zadanie jest wykonywane tylko wtedy, gdy zawiera co najmniej jeden przepływ danych.

Aby zbiorczo wstawić dane z plików tekstowych do bazy danych programu SQL Server, możesz użyć zadania Wstawianie zbiorcze zamiast zadania przepływu danych i przepływu danych. Jednak zadanie Wstawianie zbiorcze nie może przekształcić danych. Aby uzyskać więcej informacji, zobacz Zadanie wstawiania zbiorczego.

Wiele przepływów

Zadanie przepływu danych może obejmować wiele przepływów danych. Jeśli zadanie kopiuje kilka zestawów danych, a kolejność kopiowania danych nie jest znacząca, może być wygodniejsza, aby uwzględnić wiele przepływów danych w zadaniu przepływu danych. Można na przykład utworzyć pięć przepływów danych, z których każda kopiuje dane z pliku prostego do innej tabeli wymiarów w schemacie gwiazdy magazynu danych.

Jednak aparat przepływu danych określa kolejność wykonywania, gdy istnieje wiele przepływów danych w ramach jednego zadania przepływu danych. W związku z tym, gdy kolejność jest ważna, pakiet powinien używać wielu zadań przepływu danych, z których każde zadanie zawiera jeden przepływ danych. Następnie można zastosować ograniczenia pierwszeństwa, aby kontrolować kolejność wykonywania zadań.

Na poniższym diagramie przedstawiono zadanie przepływu danych, które ma wiele przepływów danych.

Przepływy danych

Wpisy dziennika

Usługi Integration Services udostępniają zestaw zdarzeń dziennika, które są dostępne dla wszystkich zadań. Usługi Integration Services udostępniają również niestandardowe wpisy dziennika do wielu zadań. Więcej informacji znajdziesz w Integration Services (SSIS) Logging. Zadanie Przepływu danych zawiera następujące niestandardowe wpisy dziennika:

Wpis dziennika Description
DostosowywanieRozmiaruBufora Wskazuje, że zadanie Przepływu danych zmieniło rozmiar buforu. Wpis dziennika opisuje przyczyny zmiany rozmiaru i wyświetla tymczasowy nowy rozmiar buforu.
OnPipelinePostEndOfRowset Wskazuje, że składnik otrzymał sygnał końca zestawu wierszy, który jest ustawiany przez ostatnie wywołanie metody ProcessInput . Wpis jest zapisywany dla każdego składnika w przepływie danych, który przetwarza dane wejściowe. Wpis zawiera nazwę składnika.
OnPipelinePostPrimeOutput Wskazuje, że składnik zakończył ostatnie wywołanie metody PrimeOutput . W zależności od przepływu danych można zapisać wiele wpisów dziennika. Jeśli składnik jest źródłem, ten wpis dziennika oznacza, że składnik zakończył przetwarzanie wierszy.
OnPipelinePreEndOfRowset Wskazuje, że składnik ma otrzymać sygnał końca zestawu wierszy, który jest ustawiany przez ostatnie wywołanie metody ProcessInput . Wpis jest zapisywany dla każdego składnika w przepływie danych, który przetwarza dane wejściowe. Wpis zawiera nazwę składnika.
OnPipelinePrePrimeOutput Wskazuje, że składnik ma odebrać wywołanie z metody PrimeOutput . W zależności od przepływu danych można zapisać wiele wpisów dziennika.
OnPipelineRowsSent Zgłasza liczbę wierszy dostarczonych do danych wejściowych składnika przez wywołanie metody ProcessInput . Wpis dziennika zawiera nazwę składnika.
PipelineBufferLeak Zawiera informacje o każdym składniku, który utrzymał bufory aktywne po zakończeniu działania menedżera buforów. Jeśli bufor jest nadal żywy, zasoby buforów nie zostały zwolnione i mogą powodować wycieki pamięci. Wpis dziennika zawiera nazwę składnika i identyfikator buforu.
PipelineComponentTime Raportuje ilość czasu (w milisekundach), który składnik spędził w każdym z pięciu głównych kroków przetwarzania: Validate, PreExecute, PostExecute, ProcessInput i ProcessOutput.
PipelineExecutionPlan Raportuje plan wykonania przepływu danych. Plan wykonywania zawiera informacje o tym, jak bufory będą wysyłane do składników. Te informacje w połączeniu z wpisem dziennika PipelineExecutionTrees opisują, co dzieje się w zadaniu przepływu danych.
PipelineExecutionTrees Raportuje drzewa wykonawcze schematu w przepływie danych. Harmonogram aparatu przepływu danych używa drzew do utworzenia planu wykonania przepływu danych.
Inicjalizacja Pipeliny Zawiera informacje o inicjowaniu zadania. Te informacje obejmują katalogi używane do tymczasowego przechowywania danych obiektów BLOB, domyślny rozmiar buforu i liczbę wierszy w buforze. W zależności od konfiguracji zadania przepływu danych można zapisać wiele wpisów dziennika.

Te wpisy dziennika zawierają wiele informacji na temat wykonywania zadania przepływu danych za każdym razem, gdy uruchamiasz pakiet. Podczas wielokrotnego uruchamiania pakietów można przechwycić informacje, które w czasie zawierają ważne informacje historyczne dotyczące przetwarzania wykonywanego zadania, problemy, które mogą mieć wpływ na wydajność, oraz ilość danych, którą obsługuje zadanie.

Aby uzyskać więcej informacji na temat używania tych wpisów dziennika do monitorowania i zwiększania wydajności przepływu danych, zobacz jeden z następujących tematów:

Przykładowe komunikaty z zadania przepływu danych

W poniższej tabeli wymieniono przykładowe komunikaty dotyczące wpisów dziennika dla bardzo prostego pakietu. Pakiet używa źródła OLE DB do wyodrębniania danych z tabeli, transformacji Sortowanie do sortowania danych i docelowej lokalizacji OLE DB do zapisu danych w innej tabeli.

Wpis dziennika Messages
DostosowywanieRozmiaruBufora Rows in buffer type 0 would cause a buffer size greater than the configured maximum. There will be only 9637 rows in buffers of this type.

Rows in buffer type 2 would cause a buffer size greater than the configured maximum. There will be only 9497 rows in buffers of this type.

Rows in buffer type 3 would cause a buffer size greater than the configured maximum. There will be only 9497 rows in buffers of this type.
OnPipelinePostEndOfRowset A component will be given the end of rowset signal. : 1180 : Sort : 1181 : Sort Input

A component will be given the end of rowset signal. : 1291 : OLE DB Destination : 1304 : OLE DB Destination Input
OnPipelinePostPrimeOutput A component has returned from its PrimeOutput call. : 1180 : Sort

A component has returned from its PrimeOutput call. : 1 : OLE DB Source
OnPipelinePreEndOfRowset A component has finished processing all of its rows. : 1180 : Sort : 1181 : Sort Input

A component has finished processing all of its rows. : 1291 : OLE DB Destination : 1304 : OLE DB Destination Input
OnPipelinePrePrimeOutput PrimeOutput will be called on a component. : 1180 : Sort

PrimeOutput will be called on a component. : 1 : OLE DB Source
OnPipelineRowsSent Rows were provided to a data flow component as input. : : 1185 : OLE DB Source Output : 1180 : Sort : 1181 : Sort Input : 76

Rows were provided to a data flow component as input. : : 1308 : Sort Output : 1291 : OLE DB Destination : 1304 : OLE DB Destination Input : 76
PipelineComponentTime The component "Calculate LineItemTotalCost" (3522) spent 356 milliseconds in ProcessInput.

The component "Sum Quantity and LineItemTotalCost" (3619) spent 79 milliseconds in ProcessInput.

The component "Calculate Average Cost" (3662) spent 16 milliseconds in ProcessInput.

The component "Sort by ProductID" (3717) spent 125 milliseconds in ProcessInput.

The component "Load Data" (3773) spent 0 milliseconds in ProcessInput.

The component "Extract Data" (3869) spent 688 milliseconds in PrimeOutput filling buffers on output "OLE DB Source Output" (3879).

The component "Sum Quantity and LineItemTotalCost" (3619) spent 141 milliseconds in PrimeOutput filling buffers on output "Aggregate Output 1" (3621).

The component "Sort by ProductID" (3717) spent 16 milliseconds in PrimeOutput filling buffers on output "Sort Output" (3719).
PipelineExecutionPlan SourceThread0

Drives: 1

Influences: 1180 1291

Output Work List

CreatePrimeBuffer of type 1 for output ID 11.

SetBufferListener: "WorkThread0" for input ID 1181

CreatePrimeBuffer of type 3 for output ID 12.

CallPrimeOutput on component "OLE DB Source" (1)

End Output Work List

End SourceThread0

WorkThread0

Drives: 1180

Influences: 1180 1291

Input Work list, input ID 1181 (1 EORs Expected)

CallProcessInput on input ID 1181 on component "Sort" (1180) for view type 2

End Input Work list for input 1181

Output Work List

CreatePrimeBuffer of type 4 for output ID 1182.

SetBufferListener: "WorkThread1" for input ID 1304

CallPrimeOutput on component "Sort" (1180)

End Output Work List

End WorkThread0

WorkThread1

Drives: 1291

Influences: 1291

Input Work list, input ID 1304 (1 EORs Expected)

CallProcessInput on input ID 1304 on component "OLE DB Destination" (1291) for view type 5

End Input Work list for input 1304

Output Work List

End Output Work List

End WorkThread1
PipelineExecutionTrees begin execution tree 0

output "OLE DB Source Output" (11)

input "Sort Input" (1181)

end execution tree 0

begin execution tree 1

output "OLE DB Source Error Output" (12)

end execution tree 1

begin execution tree 2

output "Sort Output" (1182)

input "OLE DB Destination Input" (1304)

output "OLE DB Destination Error Output" (1305)

end execution tree 2
Inicjalizacja Pipeline'u No temporary BLOB data storage locations were provided. The buffer manager will consider the directories in the TEMP and TMP environment variables.

The default buffer size is 10485760 bytes.

Buffers will have 10000 rows by default

The data flow will not remove unused components because its RunInOptimizedMode property is set to false.

Wiele zdarzeń dziennika zapisuje wiele wpisów, a komunikaty dla wielu wpisów dziennika zawierają złożone dane. Aby ułatwić zrozumienie i komunikowanie zawartości złożonych komunikatów, możesz przeanalizować tekst wiadomości. W zależności od lokalizacji dzienników można użyć instrukcji Transact-SQL lub składnika Script, aby oddzielić złożony tekst do kolumn lub innych formatów, które są bardziej przydatne.

Na przykład poniższa tabela zawiera komunikat "Rekordy zostały przekazane do składnika przepływu danych jako dane wejściowe". : : 1185: Dane wyjściowe źródła OLE DB: 1180: Sortuj: 1181: Sortuj dane wejściowe: 76", analizowane w kolumnach. Komunikat został napisany przez zdarzenie OnPipelineRowsSent, gdy wiersze zostały wysłane z OLE DB źródła do przekształcenia Sort.

Kolumna Description Wartość
Identyfikator ścieżki Wartość z właściwości ID ścieżki między źródłem OLE DB a przekształceniem Sortowanie. 1185
Nazwa_ścieżki Wartość z właściwości Name ścieżki. Dane wyjściowe źródła OLE DB
Componentid Wartość właściwości ID przekształcenia Sort. 1180
Nazwa składnika Wartość właściwości Name z przekształcenia Sort. Sortuj
Identyfikator wejściowy Wartość z właściwości ID wejściowych w transformacji Sortowanie. 1181
InputName Wartość z właściwości Name danych wejściowych do transformacji Sortowanie. Sortowanie danych wejściowych
Wiersze wysłane Liczba wierszy wysłanych na wejście przekształcenia Sort. 76

Konfiguracja zadania przepływu danych

Właściwości można ustawić w oknie Właściwości lub programowo.

Aby uzyskać więcej informacji na temat ustawiania tych właściwości w oknie Właściwości , kliknij następujący temat:

Programowa konfiguracja zadania przepływu danych

Aby uzyskać więcej informacji na temat programowego dodawania zadania przepływu danych do pakietu i ustawiania właściwości przepływu danych, kliknij następujący temat:

Ustaw właściwości zadania lub kontenera

Wideo, zrównoważony dystrybuator danych, na technet.microsoft.com.