Rozwiązywanie problemów z modułów zbierających dane
Ten temat dotyczy rozwiązywanie problemów z następujących kategorii:
Warunki błędów.Kategoria ta obejmuje modelu obiektów i błędy przy uruchomieniu czas.
Problemy z wydajnością.Kategoria ta obejmuje ogólne i wydajności w określonych scenariuszach.
System przestaje odpowiadać.Kategoria ta obejmuje podskładnik zawiesza się podczas danych kolekcja.
Warunki błędów
Błędy można podnieść z modelu obiektów lub przy uruchomieniu czas.
Błędy modelu obiektu
Model obiektowy modułów zbierających dane jest zarządzany interfejsu API umożliwia programowe zarządzanie właściwości modułów zbierających dane i dane kolekcja ustawia.Model obiektu jest cienka otokę zestaw procedur przechowywanych i widoków, które przewidują mechanizm konfiguracja modułów zbierających dane.Aby uzyskać więcej informacji, zobacz Programowanie modułów zbierających dane.
Obiekt modelu błędy mogą pochodzić z jednego z następujących składników modelu obiektów:
A Transact-SQL błąd jest wywoływane z procedura składowana lub Transact-SQL kodu nazywa się jeden z modułów zbierających dane przechowywane procedury.
A Transact-SQL błąd jest wywoływane bezpośrednio z procedura składowana modułów zbierających dane.
Zarządzany jest wyjątek bezpośrednio z modelu obiektów.
W poniższej tabela opisano błędy, które może zostać podniesiony z modelu obiektów.
Komunikat o błędzie |
Numer błędu |
Opis |
---|---|---|
Nie można zaktualizować nazwę miejsce docelowe, proxy_id lub collection_mode aktywnego zestaw kolekcja '% s'.Stop zestaw kolekcja , a następnie spróbuj ponownie zaktualizować. |
14669 |
Podjęto próbę aktualizacji aktywnego zestaw kolekcja.A zestaw kolekcja muszą być zatrzymane przed dowolnej aktualizacji tego typu można wykonać.Można zmieniać tylko harmonogram przekazywania podczas zestaw kolekcja jest aktywny. |
Nie można usunąć aktywnego zestaw kolekcja '% s'.Stop zestaw kolekcja , a następnie spróbuj ponownie usunąć. |
14670 |
Próba usunięcia zestaw kolekcja z systemem. |
Nie można zaktualizować nazwę lub parametry element kolekcja '% s' kolekcja active zestaw '% s'.Stop zestaw kolekcja , a następnie spróbuj ponownie zaktualizować element kolekcja. |
14671 |
Próba zaktualizowania element kolekcja kolekcja zestaw z systemem. |
Nie można usunąć element kolekcja '% s' kolekcja active zestaw '% s'.Stop zestaw kolekcja , a następnie spróbuj ponownie usunąć element z kolekcja. |
14672 |
Próba usunięcia element kolekcja kolekcja zestaw z systemem. |
Nie można usunąć typ modułu zbierającego '% s'.Usunąć wszystkie elementy kolekcja skojarzonych z tym typ modułu zbierającego , a następnie spróbuj ponownie usunąć. |
14673 |
Próba usunięcia typ modułu zbierającego , ma związane z nim elementy kolekcja. |
Nie można przekazywać dane dla nieaktywnych zestaw kolekcja '% s'.Uruchom zestaw kolekcja , a następnie spróbuj ponownie przekazać dane. |
14674 |
Próba przekazania danych zebranych przez zestaw kolekcja , nie jest uruchomiona. |
Nie można zaktualizować nazwę, miejsce docelowe, proxy_id, logging_level lub collection_mode lub dodać element kolekcja do aktywnego zestaw kolekcja '% s'.Stop zestaw kolekcja , a następnie spróbuj ponownie zaktualizować. |
14675 |
Próba zaktualizowania zestaw kolekcja z systemem. |
Użytkownik nie ma uprawnień do zmiany '% s'.Użytkownik powinien być element członkowski roli modułów zbierających dane '% s'. |
14676 |
Użytkownik próbował zaktualizować właściwość, która może być zmieniane tylko przez rolę modułów zbierających dane specyficzne. |
Użytkownik nie ma uprawnień do wykonania tej operacji.Użytkownik musi być element członkowski roli modułów zbierających dane '% s'. |
14677 |
Użytkownik próbował wykonać operację nie są częścią roli modułów zbierających dane wymagane. |
Śledzenie programu SQL Server o identyfikatorze %d została zatrzymana i zamknięte przez użytkownika zewnętrznego.Zbierających śledzenia programu SQL Server spróbuje ponownie śledzenia. |
14678 |
Została zatrzymana i zamknięte runtime zbierających został utworzony i używanych przez moduł zbierający dane śledzenia. |
Określony %s (% s) jest nieprawidłowa w tym magazyn danych. |
14679 |
Parametr przekazany do jednej z procedur przechowywanych w magazyn danych zarządzania ma wartość nie pasuje do innych wpisów w magazynie. |
Ta wersja programu instmdw.sql tylko powinny być wykonywane na serwerze z programem SQL Server 2005 lub nowszej. |
14680 |
Próba instalacji magazyn danych zarządzania na serwerze z programem SQL Server 2000 lub starszego. |
Nie można wykonać tę procedurę, kiedy kolektora jest wyłączone.Włącz kolektora, a następnie spróbuj ponownie. |
14681 |
Próba wykonania operacji, która powoduje konflikt z Państwem kolektora. |
Stan zestaw kolekcja uległa zmianie, ale nie będzie się uruchomić lub zatrzymać aż do kolektora jest włączona. |
14682 |
Próba uruchomienia lub zatrzymania zestaw kolekcji podczas kolektora nie jest włączona. |
A zestaw kolekcji migawka lub ciągły tryb wymaga harmonogramu. |
14683 |
Tworzenie lub aktualizowanie zestaw kolekcja w migawka lub w trybie ciągłym bez harmonogramu. |
Złowione błąd #: % d, poziom: % d, stan: % d, w procedurze: % s, wiersz: % d, z komunikatem: %s |
14684 |
Wystąpił błąd rodzajowy w składniku modułów zbierających dane; Błąd został złowionych w blok catch i rethrown. |
Nieprawidłowa operacja.Stan zestaw kolekcja o identyfikatorze = %d jest obecnie "nie jest uruchomiona". |
14685 |
Wywołanie sp_syscollector_create_set_queue_and_service zestaw o stanie is_running, 0. |
Parametry MDWInstance i MDWDatabase magazynu konfiguracja nie może być null. |
14686 |
Połączenie ciąg do zarządzania jest null, MDWInstance lub MDWDatabase parametry magazyn danych. |
Nieprawidłowa wartość (% d) parametr @ cache_window.Wartości dopuszczalne są następujące: -1 (bufor wszystkie dane przekazywania awariach przekazywania poprzedniego), 0 (bez przekazywania danych w pamięci podręcznej), N (pamięci podręcznej danych z poprzedniego n przekazać błędy, gdzie n >= 1) |
14687 |
Podjęto próbę zestaw wartość parametru CacheWindow magazynu konfiguracja modułów zbierających wartość mniejszą niż -1. |
A zestaw kolekcja nie można uruchomić po zatrzymaniu agenta programu SQL Server.Uruchom agenta programu SQL Server. |
14688 |
Podjęto próbę uruchomienia zestaw kolekcja podczas agenta programu SQL Server nie jest włączona. |
A zestaw kolekcja nie można uruchomić, jeśli nie skonfigurowano magazyn danych zarządzania.Uruchom skrypt instmdw.sql, tworzenia i konfigurowania magazyn danych zarządzania. |
14689 |
Podjęto próbę uruchomienia kolekcja zestaw , gdy zarządzanie magazynem danych nie jest zestaw w górę. |
Nie można wykonać tę procedurę, kiedy kolektora jest włączone.Wyłącz kolektora, a następnie spróbuj ponownie. |
14690 |
Próba wykonania operacji, która powoduje konflikt z Państwem kolektora. |
Stan modułu zbierającego nie może być null.Może to oznaczać wewnętrznych uszkodzeń w moduł zbierający dane konfiguracja. |
14691 |
Wywołanie sp_syscollector_verify_collector_state znaleziono parametru CollectorEnabled z wartością null.Może to wskazywać wewnętrzne uszkodzenie danych konfiguracja kolektora. |
Błędy w czasie wykonywania
Uruchom -czas błędów może się zdarzyć, gdy pakiet pobierania lub przekazywania pakiet działa i napotka problem.Błędy mogą pochodzić z jednego z następujących składników:
Przepływ danych z SQL Server 2008 Integration Services (SSIS) pakiet.Te błędy mogą być wynikiem konwersji danych nie powiodło się lub obcięcie danych.Moduł zbierający dane rejestruje liczbę wierszy, które miały wpływ błąd i rejestruje ten numer w tabelach dziennika modułów zbierających dane.
Przepływ sterowania pakiet SSIS.Błędy są rejestrowane w tabelach SSIS dziennika w msdb bazy danych (msdb.dbo.sysssislog) i są przepuszczanie poza tabelami dziennika modułów zbierających dane.
Uruchamianie modułów zbierających dane -czas składnika (dcexec.exe).Błędy są rejestrowane bezpośrednio w tabelach dziennika modułów zbierających dane.
Aby uzyskać więcej informacji, zobacz Rejestrowanie modułów zbierających dane.
Zaleca się jedną z następujących metod uzyskiwania informacje dotyczące wykonywania - stanuczas błędy.
Transact-SQL procedur przechowywanych i widoków
Aby wyświetlić stan wszystkich aktualnie uruchomionych i gotowych zestawów kolekcja lub opakowania, uruchom następującą kwerendę:
use msdb
select * from syscollector_execution_log_full
Powyższa kwerenda zwraca następujący zestaw wyników.
Nazwa kolumny |
Opis |
---|---|
log_id |
Unikatowy identyfikator dla każdego zestaw kolekcja wykonanie.To jest używane do łączyć w tym widoku z innymi szczegółowe dzienniki. |
parent_log_id |
Identyfikator pakiet nadrzędnej lub zestaw kolekcja.Jest to wartość NULL dla zestaw kolekcja.Identyfikatory są powiązane w relacji nadrzędny podrzędność, aby ułatwić określenie, które zestaw kolekcja uruchomiony pakiet, który.Ponadto ten widok grupy wpisów dziennika przez powiązanie ich nadrzędny podrzędność i wcięcia nazwy pakietów, więc łańcucha wywołania jest wyraźnie widoczne. |
name |
Nazwa zestaw kolekcja lub pakiet, który reprezentuje ten wpis dziennika. |
collection_mode |
Kolekcja zestaw działania, gdy dokonano wpisu, pobierania lub przekazywania. |
start_time |
Gdy zestaw kolekcja lub pakiet został uruchomiony. |
last_iteration_time |
Stale uruchamiania pakietów ostatniego czas że pakiet przechwycone migawka. |
finish_time |
Pakiety i zestawy kolekcja zakończone czas zakończeniu uruchom. |
duration |
Czas w milisekundach, który pakiet lub zestaw kolekcja został uruchomiony. |
operator |
Operator, który uruchomił zestaw kolekcja lub pakiet. |
status |
Stan zestaw kolekcja lub pakiet.Będzie to:
|
failure_task |
Jeśli zestaw kolekcja lub pakiet nie powiodła się, nazwa zadania pakiet SSIS, który spowodował błąd. |
package_execution_id |
Łącze do tabela Dziennik SSIS. |
collection_set_id |
Łącze do tabela konfiguracja modułów zbierających dane. ![]()
Collection_set_id jako filtru można użyć skupić się na konkretną zestaw kolekcja w dzienniku.
|
Aby uzyskać więcej informacji, zobacz syscollector_execution_log_full (języka Transact-SQL).
Można uzyskać dodatkowe informacje o zestaw kolekcja i pakiet wykonanie przez wykonanie jednej z funkcji dostępnych modułów zbierających dane.
Następująca funkcja zwraca szczegółowych statystyk dotyczących zestaw kolekcja lub pakiet, łącznie z liczbą wierszy błędów rejestrowane przez pakiet.
select * from fn_syscollector_get_execution_stats(@log_id)
Funkcja dalej zwraca część dziennika SSIS (sysdtslog90), który odpowiada package_execution_id dla pakiet.Jeśli pakiet nie powiodło się, jest to najlepszy sposób, aby dowiedzieć się, wystąpił błąd katalogu głównego.
select * from fn_syscollector_get_execution_details(@log_id)
Raporty o stanie modułów zbierających dane
Można uzyskać te same informacje, które są zwracane przez poprzednie Transact-SQL kwerend, przeglądając dzienniki w SQL Server Management Studio.Aby uzyskać więcej informacji, zobacz Jak Wyświetlanie kolekcji zestawu dzienników.
Problemy z wydajnością
Istnieją trzy podstawowe źródła danych, używany do przeglądania i diagnozowanie wydajności.
Po pierwsze opisane w poprzedniej sekcji tabele dziennika również dostarczyć przydatnych informacji, używany do rozwiązania problemów z wydajnością.
fn_syscollector_get_execution_stats Funkcja zwraca następujące informacje.
Nazwa kolumny |
Opis |
---|---|
avg_row_count_in |
Średnia liczba wierszy, które wprowadzane przepływ danych zadań pakiet. |
min_row_count_in |
Minimalna liczba wierszy, które wprowadzane przepływ danych zadań pakiet. |
max_row_count_in |
Maksymalna liczba wierszy, które wprowadzane przepływ danych zadań pakiet. |
avg_row_count_out |
Średnia liczba wierszy, które zostało zakończone przepływ danych zadań pakiet. |
min_row_count_out |
Minimalna liczba wierszy, które zadania przepływ danych pakiet. |
max_row_count_out |
Maksymalna liczba wierszy, które zadania przepływ danych pakiet. |
avg_duration |
Średni czas (w milisekundach) spędzony w składnik przepływ danych pakiet. |
min_duration |
Minimalny czas (w milisekundach) spędzony w składnik przepływ danych pakiet. |
max_duration |
Maksymalny czas (w milisekundach) spędzony w składnik przepływ danych pakiet. |
Drugie źródło danych wydajności jest syscollector_execution_log_full tabela, która zawiera informacje, jak długo zestaw kolekcja został uruchomiony lub jest uruchomiony.
Wreszcie liczniki wydajności można pomóc oceny problemy z wydajnością.Liczniki standardowego procesu dla wystąpienia procesów (dcexec.exe) modułów zbierających dane w szczególności dostarczania dobrej wskaźników ilość zasobów systemowych Uruchamianie modułów zbierających dane -czas używanie składnika.
Scenariusze problemu wydajności
Dwa scenariusze najprawdopodobniej będzie wyświetlany jako problemy z wydajnością podczas uruchamiania modułów zbierających dane:
Moduł zbierający dane zużywa dużo zasobów systemowych.
Modułów zbierających dane można nie nadąża obciążenia kolekcja.
Nadmierne zużycie zasobów systemowych
Analiza liczników wydajności procesu wskazuje, że zbyt wiele zasobów systemowych z procesów dcexec.exe, następujące dochodzenia będzie trzeba zrobić.
Najpierw należy określić, czy jest pojedyncza zestaw kolekcji używający najwięcej zasobów.
Do identyfikacji kolekcja zestaw, mapowania Identyfikatora procesu zbierania zestaw identyfikator w syscollector_execution_log_full, a następnie znajdź kolekcja zestaw w syscollector_collection_sets tabela.
Ustalić, co zestaw kolekcja jest zbieranie.Lista wszystkich elementów w kolekcja zgrupowane w za pomocą następującej kwerendy zestaw:
select * from syscollector_collection_set_items where collection_set_id = <id>
Korzystając z informacji z poprzedniej kwerendy, należy rozważyć następujące kwestie:
Czy istnieje zbyt wiele elementów kolekcja?
To pojedyncza element kolekcja większość problemów powodujących?
Jest za dużo danych są zbierane?
Odpowiedź tak na dowolne z powyższych pytań należy rozważyć zmodyfikowanie kolekcja lub elementów kolekcja, aby zmniejszyć głośność gromadzone dane.Zmniejszy to zużycie zasób.
Po drugie ustalić, jeżeli przyczyną problemu jest liczba aktywnych kolekcja zestawów.
Dowiedzieć się ile kolekcja zestawów są zdefiniowane w systemie za pomocą następującej kwerendy:
select count(*) from syscollector_collection_sets
Dowiedzieć się ile kolekcja zestawów aktualnie uruchomione za pomocą następującej kwerendy:
select count(*) from syscollector_execution_log_full where parent_log_id is null and status = 1
Jeśli sporadyczne problemy z wydajnością, zobacz problem przypisywał do kolekcja lub przekazać aktywności.Jeśli harmonogramy są takie same, to może być przyczyną problemu.Dopasowywanie kolekcja lub harmonogram przekazywania może być proste rozwiązanie.
Nie można przechowywać obciążenia
Warunek ten występuje tylko w przypadku ciągłego uruchamianie zestawów kolekcja.Jeśli jest wysoka częstotliwość pobierania i ma dużą ilość danych do gromadzenia, pakiet kolekcja nie możliwość przetwarzania danych w czas przydzielona dla pojedynczej migawka iteracji.Możesz wykrywać tego warunku przez porównanie avg_duration i max_duration kolumn w tabela Dziennik częstotliwości zbierania zdefiniowane dla element określonej kolekcja.
Jeśli max_duration wartość jest większa niż wartość częstotliwości, pakiet kolekcja nie zawsze mogą być stanie nadążyć z skonfigurowanych częstotliwości.Jeśli avg_duration wartość jest wyższa niż częstotliwość, pakiet kolekcja ma problem spójne.W tym ostatnim przypadek należy zmniejszyć częstotliwość lub element kolekcja powinny być zmodyfikowane, aby ograniczyć ilość zebranych danych.
System zawiesza się
System może zawiesić Jeśli zatrzymuje przetwarzanie pakiet uruchomiony jako część modułów zbierających dane, ale nie jest zamykany i pozostaje w tym stanie.Większość zawiesza się system może być rozpoznana przez zatrzymanie i ponowne uruchomienie zestaw kolekcja.
Jest ważne, aby odróżnić prawdziwe zawiesić się od zamierzone zachowanie.
Stale uruchomiony pakiet kolekcja spędza się większość czas w stanie oczekiwania, budzenie okresowo zebrać migawkę danych.Po gromadzenia danych, pakiet powraca do stanu oczekiwania.Ten stan oczekiwania może być wyświetlana zawieszanie się systemu, ale nie jest.Aby sprawdzić, sprawdź syscollector_execution_log_full tabela dla podejrzanych pakiet.Jeśli last_iteration_time była nie później niż bieżący czas, warunek jest nie zawiesi się.
Pakiet może być przeznaczony do oczekiwania na zdarzenie, które wyzwoli akcja kolekcja.W takim przypadek pakiet będzie czekać na zdarzenie.Nie jest zawieszenie.
Aby sprawdzić, czy zawieszenie systemu związane z modułów zbierających dane, należy wykonać następujące kontrole:
Najpierw należy zidentyfikować identyfikator procesu dcexec.exe, odpowiadające zestaw kolekcja , którego chcesz zbadać.
Następnie sprawdź, czy działa proces i jeśli używa żadnych zasobów.Każdy proces zawieszanie zazwyczaj używa 0% CPU i nie przydzielić więcej pamięci.Ten proces można również użyć wysoki procent mocy Procesora.Jeśli jest to przypadek może być pętli i zamykania nie pamięci.
Na koniec sprawdź tabela dziennika dla procesu zobaczyć w czasie ostatniej aktualizacji.Jeśli czas aktualizacji jest większa niż częstotliwość dla element kolekcja, proces może ulec zawieszeniu.
Istnieje kilka powodów dlaczego może zawiesić proces modułów zbierających dane.Najczęściej są następujące:
Pakiet czeka na następnej iteracji być sygnalizowane, ale tak nie jest.
Pakiet czeka na blokada współużytkowana , jest w posiadaniu innego pakietu, ale nie została zwolniona blokada.
Wystąpił błąd podczas wykonywania pakietu, który nie był obsługiwany poprawnie i przepływ sterowania zostało zerwane, ale pakiet działał prawidłowo całkowicie.
W każdym z powyższych przypadków są określone wpisy w dzienniku, odnoszące się do zawieszenia systemu.Sprawdzić, czy są komunikaty, które wskazują przyczyny.W zdarzenie systemu zawieszenia, utworzyć automatyczna kopia zapasowa procesu dcexec.exe i dalszego zbadania.