2012-10-17 32 views
9

Mam 2 zaplanowane zadania na moim komputerze z programem SQL Server 2005, które są uruchamiane każdego ranka (około 2:00). Te prace sprawdziły się dobrze (głównie) przez lata i chociaż miałem kilka problemów, które musiałem przezwyciężyć ten problem, całkowicie mnie denerwują.SSIS: Po prostu zaczęto uzyskiwać "Klucz nie jest prawidłowy do użycia w określonym stanie". błąd w moim zaplanowanym pakiecie SSIS

Dwa poranki temu jeden z moich paczek rozpoczął raportowanie następujący błąd:

Executed as user: [Service Acount]. ...n 9.00.4035.00 for 32-bit 
Copyright (C) Microsoft Corp 1984-2005. All rights reserved. 
    Started: 1:15:01 AM Error: 2012-10-17 01:15:03.98 
    Code: 0xC0016016 
    Source: 
     Description: Failed to decrypt protected XML node "DTS:Password" 
     with error 0x8009000B "Key not valid for use in specified state.". 
     You may not be authorized to access this information. This error 
     occurs when there is a cryptographic error. Verify that the 
     correct key is available. End Error Error: 2012-10-17 01:15:03.99 
    Code: 0xC0016016 
    Source: 
     Description: Failed to decrypt protected XML node "DTS:Password" 
     with error 0x8009000B "Key not valid for use in specified state.". 
     You may not be authorized to access this information. This error 
     occurs when there is a cryptographic error. Verify that the 
     correct key is available. End Error Error: 2012-10-17 01:15:04.01 
    Code: 0xC0016016  
Source:  
Description: Failed to ... The package execution fa... The step failed. 

To wydaje się być wspólny problem, jednak żaden z zaleceniami, które znalazłem albo zastosować do mojego scenariusza, ani czy moje wystąpienie wydaje się pasować do większości innych przypadków, w których tak się dzieje. Oto ważne szczegóły dotyczące mojej implementacji.

  • Ten pakiet eksportuje dane z systemu iSeries do SQL Server tabel danych 2005.
  • Ten proces działa poprawnie, ale zawiesza się na jednym, określonym eksporcie tabeli. W rzeczywistości działa on bez problemu przez ponad 2 godziny przed śmiercią. Po sprawdzeniu wszystkich właściwości powiązanych z z tym krokiem widzę, że nie ma nic innego w tym kroku niż w innych krokach eksportowania tabeli, innych niż mapowanie eksportu tabeli/kolumny .
  • Pakiet ProtectionLevel jest ustawiony na DontSaveSensitive, a poświadczenia iSeries są przechowywane w pliku konfiguracyjnym, do którego dostęp uzyskuje SQL Server.
  • Mogę wykonać awaryjny krok na mojej maszynie, w OFERTACH. Niezależnie od tego nie działa on na serwerze, chociaż serwer używa dokładnie tych samych poświadczeń.
  • Jak już wspomniałem, mam dwie paczki. Są to faktycznie te same rzeczy, z wyjątkiem tego, że jeden eksportuje dane z jednej bazy danych iSeries, a drugi eksportuje dane o wartości prawie dokładnie takiej samej z innego serwera iSeries DB. Pierwszy pakiet nie ma żadnych problemów, nawet jeśli używa tych samych poświadczeń systemu iSeries.
  • Żeby było jasne, nic na moim serwerze nie zmieniło się w ciągu kilku miesięcy (o czym jestem świadoma). To właśnie zaczęło się wczoraj.

Wszelkie wskazówki lub przemyślenia byłyby niezwykle pomocne. Ten eksport jest niezwykle ważny i wielu użytkowników/pracowników polega na tych danych do codziennej pracy.

+1

Jakieś aktualizacje, które zostały zastosowane do twojego serwera? Czy próbowałeś zapisać pakiet bezpośrednio od BIDS do docelowej lokalizacji (Save As daje tę opcję)? – rvphx

+0

Nie wierzę, że jakiekolwiek aktualizacje zostały przekazane do serwera (systemu operacyjnego). Kontroluję wszelkie aktualizacje do SQL Server i nie mam żadnych zainstalowanych. Ponadto, buduję projekt lokalnie na moim komputerze, a następnie zdalnie wprowadzam go do maszyny SQL Server i importuję do bazy danych (nie do lokalizacji opartej na plikach). – RLH

+0

Czy próbowałeś zmienić poziom ochrony pakietu podczas jego importowania? do serwera SQL? Czasami podczas importowania paczki, ta rzecz zostaje pomieszana. – rvphx

Odpowiedz

12

Cóż, nie cierpię wysyłać takich odpowiedzi, ale rozwiązałem problem.

Krótka odpowiedź, dlaczego miałem ten problem, ponieważ jeden z pól w tabeli danych został nieprawidłowo zdefiniowany. W tym przypadku został zadeklarowany jako decimal (11, 3) i powinien być decimal (13, 3). Nie wystąpił ten problem, dopóki nie została zaksięgowana wartość do tabeli, która nie pasowała do zakresu (11, 3).

W tym wydaniu podkreślam jedną z moich największych skarg na SSIS. Czasami pojawiają się błędy, które często są dobrze udokumentowane w Internecie. Przeszukuję wszystkie moje dzienniki i próbuję skonfigurować różne scenariusze testowe przy założeniu, że komunikat o błędzie jest uczciwy. Jednak, kiedy w końcu rozwiązuję problem, jest on całkowicie niezwiązany z komunikatem o błędzie zapisanym w pliku dziennika.

W tym przypadku błąd wspomniany powyżej nie miał absolutnie nic wspólnego z problemem ?! Właściwie to miałem szczęście, że mogłem w ogóle zobaczyć problem. Wiedziałem, że aktualizacja na moim stole może być potencjalną poprawką, ponieważ Widziałem, jak SSIS źle się komunikuje przed.

Chciałbym obwiniać to o neutrina z kosmosu bombardującego mój serwer, ale najlepszym sposobem na pozbycie się tego doświadczenia jest próba rozwiązania problemów z SSIS w oparciu o porady innych, , jednak, jeśli ich porady nie pomaga, uświadomienie sobie, że problem może być niezwiązany z komunikatem o błędzie SSIS i potrójnie sprawdzić wszystko, co wiąże się z punktem awarii.

+2

Wow .. Nigdy nie spodziewałbym się, że problem z typem danych spowoduje ten problem. Wciąż nie ma to dla mnie żadnego sensu, ale będę o tym pamiętać. Dziękuję za udostępnienie znaleziska. – rvphx

+0

rvphx: cóż, jak podsumowałem, na wynos nie chodzi o to, że przyczyną tego * konkretnego * błędu był błąd typu danych. Zamiast tego fakt, że SSIS zgłasza nieprawidłowy błąd. Nie wiem dlaczego, ale ten dokładny błąd zawsze wydaje się być "powrotem", gdy coś idzie nie tak w SSIS. Występuje kilka błędów, które zawsze sprawdzam, zanim przeszukuję błąd (tzn. Zduplikowane próby wpisania klucza również informują o fałszywym błędzie.) Wydaje się, że jest to kolejny błąd. :/ – RLH

5

Nie mogłem opublikować obrazu w komentarzach, więc opublikowałem go jako odpowiedź.

Podczas próby zaimportowania pakietu do programu SQL Server, po kliknięciu prawym przyciskiem myszy i wykonaniu polecenia "Importuj pakiet" pojawi się następujące okno.

enter image description here

Kliknij na pole prostokąta z prawej strony okna. Da ci to możliwość zmiany poziomu ochrony paczki. Zmień go na "Nie zapisuj wrażliwych" i spróbuj uruchomić pakiet. Jedna uwaga, będzie wymagać usunięcia istniejącego pakietu i ponownego zaimportowania go ponownie. Możesz więc wypróbować go na innym komputerze przed dotknięciem istniejącej konfiguracji.

+0

Interesujące. Widzę poziom ochrony, ale nigdy nie zwróciłem na to uwagi z dwóch powodów. Po pierwsze, jest puste. Początkowo założyłbym, że odziedziczyłoby to moje początkowe ustawienia, a także, moim zdaniem, nadpisuję takie ustawienie z zadania Job Execution. Po drugie, pole wygląda na wyłączone z powodu szarego tła. Mogę to zmienić. Teraz przeprowadzam kolejny test. Gdy skończy się, a jeśli się nie powiedzie, odpowiem na wyniki tej aktualizacji. To może potrwać kolejny dzień. Uruchamianie tego pakietu zajmuje dużo czasu i po jego zakończeniu może być poza biurem. – RLH

+0

Dziękuję za pomoc rvphx. Niestety to nie było rozwiązanie moich problemów, więc nie mogę dać ci znaku odpowiedzi (ale mogę dać ci głos). Zobacz moją odpowiedź na moją poprawkę, która, jak chciałbym, była trochę bardziej użyteczna dla społeczności. – RLH

3

Dla mnie było to hasło do połączenia Manager w SSIS, które nie zostało zapisane. Wprowadź hasło -> OK-> zamknij plik dtsx & ponownie otwórz. Błąd minął.

0

Jest to obejście problemu, aby uniknąć problemu przede wszystkim zapisywania poufnych haseł w pakiecie.

Usunąłem zadanie FTP i zamiast tego użyłem zadania System plików, aby skopiować plik do tej samej lokalizacji za pośrednictwem udziału sieciowego na serwerze FTP i uniknąć korzystania z protokołu FTP.

Byłem również w stanie zapisać pakiet w systemie plików zamiast w magazynie serwera sql i działało poprawnie.

Mamy nadzieję, że to pomoże!

3

Ran do tego samego komunikatu o błędzie w SQL Server 2012. Dla mnie ponowne uruchomienie SQL Server Management Studio rozwiązany. Problem prawdopodobnie spowodował zmianę hasła mojej domeny kilka dni temu, gdy SSMS był otwarty. Jeśli napotkasz podobny problem i nie zniknie z prostym restartem, upewnij się, że sprawdziłeś informacje o buforowanym koncie i/lub spróbujesz ponownie uruchomić komputer pod numerem Control Panel\User Accounts\Credential Manager.

+0

Otrzymałem komunikat o błędzie zgłoszony na początku tego postu. Moim problemem był menedżer połączeń, w którym zmieniło się bezpieczeństwo bazy danych, a system DTS nie mógł już łączyć się z określonymi poświadczeniami. UGH, SSIS! – RickC