2013-06-22 5 views
19

Mam zadanie serwera SQL, które uruchamia pakiet SSIS. To zadanie ma 9 kroków i na każdym etapie wyodrębnia dane z innej bazy danych. ciągi połączeń są definiowane jako parametry w każdym kroku.Zadania SQL Server z pakietami SSIS - Nie można odszyfrować chronionego węzła XML "DTS: Password" z błędem 0x8009000B

Występuje następujący błąd podczas uruchamiania zadania.

Executed as user: USER\MYSERVER$. Microsoft (R) SQL Server Execute Package Utility Version 10.50.1600.1 for 64-bit Copyright (C) Microsoft Corporation 2010. All rights reserved. 
Started: 5:50:55 PM Error: 2013-06-21 17:50:55.44 
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: 2013-06-21 17:50:55.45 
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: 2013-06-21 17:50:55.45 
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: 2013-06-21 17:51:06.30 
Code: 0xC020901C 
Source: Data Flow Task Daily Attendance View 1 [34] 
Description: There was an error with output column "ShiftCode" (54) on output "OLE DB Source Output" (45). The column status returned was: "Text was truncated or one or more characters had no match in the target code page.". End Error Error: 2013-06-21 17:51:06.30 
Code: 0xC020902A 
Source: Data Flow Task Daily Attendance View 1 [34] 
Description: The "output column "ShiftCode" (54)" failed because truncation occurred, and the truncation row disposition on "output column "ShiftCode" (54)" specifies failure on truncation. A truncation error occurred on the specified object of the specified component. End Error Error: 2013-06-21 17:51:06.30 
Code: 0xC0047038 
Source: Data Flow Task SSIS.Pipeline 
Description: SSIS Error Code DTS_E_PRIMEOUTPUTFAILED. The PrimeOutput method on component "Daily Attendance View 1" (34) returned error code 0xC020902A. The component returned a failure code when the pipeline engine called PrimeOutput(). The meaning of the failure code is defined by the component, but the error is fatal and the pipeline stopped executing. There may be error messages posted before this with more information about the failure. End Error DTExec: The package execution returned DTSER_FAILURE (1). Started: 5:50:55 PM Finished: 5:51:06 PM Elapsed: 10.983 seconds. The package execution failed. The step failed. 

Czy ktoś może mi powiedzieć, dlaczego tak się dzieje?

+0

Proszę rozważyć ponowne sformatowanie danych wyjściowych. Jest bardzo trudny do odczytania bez zwrotów lub kart karetki. – rayryeng

Odpowiedz

8

Dzieje się tak, ponieważ twórcą pakietów SSIS jest ktoś inny i inna osoba wykonuje pakiety.

Przypuśćmy, że ktoś stworzył pakiety SSIS i osoba B próbuje wykonać, niż wynika z powyższego błędu.

można rozwiązać ten błąd, zmieniając nazwę twórca od właściwości pakietu z punktu A do B.

Dzięki, Kiran Sagar

+1

, ale jeśli zmienisz nazwę twórcy, nie możesz zbudować anilongera. tylko właściciel może je skompilować i opublikować. – batmaci

31

Oprócz tego, co Kiran's answer sugeruje, upewnij się, że jest ustawiony prawidłowo:

Istnieje opcja, aby w SSIS zapisywać hasła (aby uzyskać dostęp do DB lub innych rzeczy), domyślne ustawienie to "EncryptSensitiveWithUserKey" ... Musisz to zmienić.

Pakiet o parametrach Okno> ProtectionLevel - Zmień że do EncryptSensitiveWithPassword PackagePassword - podaj hasłem> somepassword

+9

Nie sądzę. To powinna być odpowiedź, ponieważ daje trwałe rozwiązanie na wypadek, gdyby pakiety podróżowały tam iz powrotem w różnych komputerach programistycznych – e4rthdog

9

Zmiana zarówno Projekt i Własności Pakiet ProtectionLevel do "DontSaveSensitive"

+5

... który został znaleziony (w studiu wizualnym) przez kliknięcie w dowolnym miejscu obszaru sterowania przepływem. – SteveCav

+2

Kliknij prawym przyciskiem myszy na twój projekt w Eksploratorze rozwiązań -> Właściwości -> Sekcja Bezpieczeństwo, zobaczysz "ProtectionLevel" właśnie tam. – HATCHA

1

trochę późno do ale znalazłem sposób, aby to naprawić dla mnie, którego nie widziałem nigdzie indziej. Wybierz połączenie z Menedżera połączeń. Po prawej stronie powinieneś zobaczyć właściwości. Sprawdź, czy są jakieś wyrażenia, jeśli nie, dodaj je. W eksploratorze pakietów dodaj zmienną o nazwie połączenie do sql lub cokolwiek innego. Ustaw zmienną jako ciąg znaków i ustaw wartość jako ciąg połączenia, dołączając identyfikator użytkownika i hasło. Powrót do właściwości menedżera połączeń i wyrażenia. Z listy rozwijanej wybierz ConnectionString i ustaw drugie pole jako nazwę zmiennej. Powinien on wyglądać następująco

enter image description here

nie mogę dla życia mnie znaleźć inne rozwiązanie, ale to działa!