Nie można uruchomić pakietu SSIS podczas wywoływana z krokiem zadania agenta programu SQL Server

Dotyczy: SQL Server 2008 DeveloperSQL Server 2008 EnterpriseSQL Server 2008 Standard

Objawy


Po wywołaniu pakietu Microsoft SQL Server 2005 Integration Services (SSIS) z krokiem zadania agenta programu SQL Server, pakietu SSIS kończy się niepowodzeniem. Jednakże jeśli nie należy modyfikować pakietu SSIS, to zostanie uruchomiony pomyślnie poza agenta programu SQL Server.

Rozwiązanie


Aby rozwiązać ten problem, użyj jednej z następujących metod. Najbardziej odpowiedniej metody zależy od środowiska i dlatego, że pakiet nie powiodło się. Powody, które pakietu nie powiodła się, są w następujący sposób:
  • Konto użytkownika, który jest używany do uruchamiania pakietu w obszarze agenta programu SQL Server różni się od oryginalnego autora pakietu.
  • Konto użytkownika nie ma wymaganych uprawnień do tworzenia połączeń lub dostępu do zasobów poza pakietu SSIS.
Pakiet może nie działać w następujących scenariuszach:
  • Bieżący użytkownik nie można odszyfrować hasła z pakietu. W tym scenariuszu może wystąpić, jeśli bieżące konto lub konto wykonania różni się od oryginalnego autora pakietu i pakiet ProtectionLevel ustawienie właściwości nie zezwala na bieżącego użytkownika odszyfrowywania hasła w pakiecie.
  • Połączenie z serwerem SQL używający zintegrowanych zabezpieczeń kończy się niepowodzeniem, ponieważ bieżący użytkownik nie ma wymaganych uprawnień.
  • Dostęp do plików nie powiedzie się, ponieważ bieżący użytkownik nie ma wymaganych uprawnień do zapisu w udziale plików, który uzyskuje dostęp do Menedżera połączeń. Na przykład w tym scenariuszu może wystąpić z dostawców dzienników tekstu, które nie korzystają z identyfikatora logowania i hasła. W tym scenariuszu może również wystąpić w przypadku dowolnego zadania, która zależy od pliku Menedżera połączeń, takich jak zadania systemowe pliku SSIS.
  • Oparte na rejestrze konfiguracji pakietu SSIS używa kluczy rejestru HKEY_CURRENT_USER. Klucze rejestru HKEY_CURRENT_USER są specyficzne dla użytkownika.
  • Zadanie lub Menedżer połączeń wymaga, że bieżące konto użytkownika ma odpowiednie uprawnienia.
Metoda 1: Użyj konta serwera proxy agenta programu SQL Server
Utwórz konto serwera proxy agenta programu SQL Server. To konto użytkownika serwera proxy należy użyć poświadczeń, który pozwala uruchomić zadanie jako konta, który utworzył pakiet lub konta, które ma wymagane uprawnienia agenta programu SQL Server.

Ta metoda działa w celu odszyfrowywania hasła i spełnia wymagania dotyczące klucza przez użytkownika. Ta metoda może mają jednak ograniczony sukces ponieważ kluczy użytkowników pakietu SSIS obejmować bieżący użytkownik i komputer bieżący. W związku z tym przeniesienie pakietu na inny komputer, Metoda ta może nadal się niepowodzeniem, nawet jeśli zadanie krok używa konta prawidłowego serwera proxy.


Metoda 2: Ustawianie właściwości ProtectionLevel pakietu SSIS do ServerStorage
Zmień właściwość pakietu SSIS ProtectionLevel na ServerStorage. To ustawienie przechowuje pakiet w bazie danych programu SQL Server i umożliwia kontrolę dostępu przez role bazy danych programu SQL Server.

Metoda 3: Ustawianie właściwości ProtectionLevel pakietu SSIS do EncryptSensitiveWithPassword
Zmień właściwość pakietu SSIS ProtectionLevel na EncryptSensitiveWithPassword. To ustawienie powoduje użycie hasła szyfrowania. Następnie można zmodyfikować wiersza polecenia SQL Server Agent zadanie krok, aby uwzględnić to hasło.


Metoda 4: Plików konfiguracyjnych użyj pakietu SSIS
Umożliwia pakietu SSIS pliki konfiguracyjne są przechowywane poufne dane, a następnie przechowywać te pliki konfiguracyjne w folderze zabezpieczonej. Następnie można zmienić właściwość ProtectionLevel do DontSaveSensitive, tak, że pakiet nie są szyfrowane i nie próbuje zapisać hasła do pakietu. Po uruchomieniu pakietu SSIS wymaganych informacji jest ładowany z pliku konfiguracyjnego. Upewnij się, że pliki konfiguracyjne są odpowiednio chronione, jeżeli zawierają one poufne informacje.


Metoda 5: Tworzenie szablonu pakietu
Długoterminowe rezolucji Tworzenie szablonu pakiet, który używa poziom ochrony, który różni się od ustawienia domyślnego. Ten problem nie występuje w przyszłości pakietów.

Stan


To zachowanie jest zgodne z projektem.

Informacje zaawansowane


Kroki prowadzące do odtworzenia problemu

  1. Zaloguj się jako użytkownik, który nie jest częścią grupy SQLServer2005SQLAgentUser. Na przykład można utworzyć użytkownika lokalnego.
  2. Tworzenie pakietu SSIS, a następnie Dodaj zadanie ExecuteSQL. Użyj usługi Menedżer połączeń OLE DB do pliku lokalnego msdb przy użyciu następującego ciągu: "Windows Authentication" - SQLSourceType: "Bezpośredniego wprowadzania" - SQLStatement: "sp_who"
  3. Należy uruchomić pakiet, aby upewnić się, że zostanie wykonane pomyślnie.
  4. Należy zauważyć, że właściwość ProtectionLevel jest ustawiona na EncryptSensitiveWithPassword.
  5. Utworzyć zadanie agenta programu SQL Server i zadanie krok. Na liście Uruchom jako kliknij polecenie Usługi Agent programu SQL Server , aby uruchomić zadanie krok.
Tekst w historii zadania agenta serwera SQL wyświetla informacje podobne do następujących:

Odszyfrowywania hasła pakiet

Ustawieniem domyślnym dla pakietu SSIS właściwość ProtectionLevel jest EncryptSensitiveWithUserKey. Podczas zapisywania pakietu SSIS szyfruje tylko elementy pakietu, które zawierają właściwości, które są oznaczone jako "poufne," takie jak hasła, nazwy użytkowników i ciągów połączenia. W związku z tym po załadowaniu pakiet, bieżący użytkownik musi spełniać wymagania dotyczące szyfrowania dla poufnych właściwości, które mają zostać odszyfrowane. Jednak bieżący użytkownik nie spełniają wymagania szyfrowania załadować pakiet. Po uruchomieniu pakietu za pomocą programu SQL Server Agent zadanie krok, domyślne konto jest konto usługi programu SQL Server Agent. To konto domyślne jest najprawdopodobniej innego użytkownika niż autora pakietu. W związku z tym kroku zadanie agenta programu SQL Server można załadować i uruchomić zadanie krok zostanie uruchomiony, ale pakiet nie powiedzie się, ponieważ nie można ukończyć połączenia. Na przykład pakiet nie może ukończyć połączenia OLE DB lub połączenia FTP. Pakiet nie powiedzie się, ponieważ nie można odszyfrować poświadczeń, które musi się połączyć.


Ważne Należy wziąć pod uwagę procesu rozwoju i środowiska w celu określenia konta, które są potrzebne i na danym komputerze. Ustawienie EncryptSensitiveWithUserKey właściwość ProtectionLevel jest ustawienie zaawansowanych. To ustawienie nie powinny być dyskontowane, ponieważ powoduje komplikacje wdrażania na początku. Pakiety można zaszyfrować, gdy logujesz się na odpowiednim koncie. Aby zmienić poziom ochrony przy użyciu pliku .cmd i polecenia podsystemu agenta programu SQL Server umożliwia także narzędzia wiersza polecenia Dtutil.exe SSIS. Na przykład wykonaj następujące kroki. Ponieważ narzędzie Dtutil.exe w plikach wsadowych i pętle, możesz wykonaj następujące kroki na kilka pakietów, w tym samym czasie.
  1. Zmodyfikuj pakiet, który chcesz zaszyfrować przy użyciu hasła.
  2. Narzędzie Dtutil.exe za pośrednictwem systemu operacyjnego (cmd Exec) programu SQL Server Agent zadanie krok, aby zmienić właściwość ProtectionLevel EncryptSensitiveWithUserKey. Ten proces wymaga odszyfrowania pakietu przy użyciu hasła, a następnie ponowne zaszyfrowanie pakiet. Klucz użytkownika, który jest używany do zaszyfrowania pakietu jest ustawienie na liście Uruchom jako krok zadanie agenta programu SQL Server.

    Uwaga Ponieważ klucz zawiera nazwę użytkownika i nazwę komputera, można ograniczyć skutki przejścia pakiety do innego komputera.

Upewnij się, że mają szczegółowe informacje o błędzie o awarii pakietu SSIS

Zamiast wpisywać ograniczone szczegóły w historii zadania agenta programu SQL Server, można użyć SSIS rejestrowania, aby upewnić się, że masz informacje o błędzie o błąd pakietu SSIS. Można również uruchomić pakiet za pomocą polecenia podsystemu exec zamiast polecenia podsystemu SSIS.

O rejestrowaniu SSIS

Dostawcy rejestrowania i dziennika SSIS pozwalają uchwycić szczegóły dotyczące wykonywania pakietu i awarie. Domyślnie pakiet nie rejestruje informacji. Należy skonfigurować pakiet do rejestrowania informacji. Po skonfigurowaniu pakiet, aby rejestrować informacje są wyświetlane szczegółowe informacje podobne do następujących. W takim przypadku będą wiedzieć, że jest problem z uprawnieniami:

OnError, nazwa_domeny, nazwadomeny\nazwaużytkownika FTP Task,{C73DE41C-D0A6-450A-BB94-DF6D913797A1},{2F0AF5AF-2FFD-4928-88EE-1B58EB431D74},4/28/2006 1:51:59 PM, 4/28/2006 1:51:59 PM,-1073573489, 0 x, nie można nawiązać połączenia z serwerem FTP przy użyciu "Menedżer połączeń FTP".

OnError, nazwa_domeny, nazwadomeny\nazwaużytkownika Execute SQL Task,{C6C7286D-57D4-4490-B12D-AC9867AE5762},{F5761A49-F2F9-4575-9E2B-B3D381D6E1F3},4/28/2006 4:07:00 PM, 4/28/2006 4:07:00 PM,-1073573396, 0 x, nie można uzyskać połączenia "user01.msdb". Połączenie może nie być poprawnie skonfigurowany lub nie masz odpowiednich uprawnień dla tego połączenia.

Temat polecenia podsystemu exec i informacje o wydajności

Za pomocą metody polecenia podsystemu exec, możesz dodać konsoli pełne rejestrowanie przełączniki wiersza polecenia SSIS wywołać Dtexec.exe SSIS wiersza polecenia pliku wykonywalnego. Ponadto funkcja zaawansowane zadania pliku wyjściowego. Opcja Obejmują dane wyjściowe kroku w historii umożliwia również przekierować rejestrowanie informacji w pliku lub historii zadania agenta serwera SQL.

Oto przykładowy wiersz polecenia:
 
dtexec.exe /FILE "C:\_work\SSISPackages\ProtectionLevelTest\ProtectionLevelTest\AgentTesting.dtsx" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF  /REPORTING V  /CONSOLELOG NCOSGXMT 


Rejestrowanie/Console zwraca szczegółowe informacje podobne do następujących:
 
Error: 2006-04-27 18:13:34.76   Code: 0xC0202009   Source: AgentTesting Connection manager "(local).msdb"   Description: An OLE DB error has occurred. Error code: 0x80040E4D.An OLE DB record is available.  Source: "Microsoft SQL Native Client"  Hresult: 0x80040E4D  Description: "Login failed for user 'DOMAINNAME\username'.".End Error 
 
Error: 2006-04-28 13:51:59.19   Code: 0xC0016016   Source:     Description: Failed to decrypt protected XML node "DTS:Property" with error 0x80070002 "The system cannot find the file specified.". 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 
 
Log:     Name: OnError     Computer: COMPUTERNAME     Operator: DOMAINNAME\username     Source Name: Execute SQL Task     Source GUID: {C6C7286D-57D4-4490-B12D-AC9867AE5762}     Execution GUID: {7AFE3D9E-5F73-42F0-86FE-5EFE264119C8}     Message: Failed to acquire connection "(local).msdb". Connection may not be configured correctly or you may not have the right permissions on this connection.     Start Time: 2006-04-27 18:13:34     End Time: 2006-04-27 18:13:34End Log 

Powiązane artykuły


Aby uzyskać więcej informacji dotyczących podobnego problemu kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

904800 pojawić komunikat o błędzie "Błąd podczas ładowania" podczas próby uruchomienia pakietu programu SQL Server 2005 Integration Services w programie SQL Server 2005

Aby uzyskać więcej informacji o tym, jak używać narzędzia Dtutil.exe w operacji wsadowych kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

906562 jak używać dtutilnarzędzia (Dtutil.exe), aby ustawić poziom ochrony partii pakietów SQL Server Integration Services (SSIS) w programie SQL Server 2005

Aby uzyskać więcej informacji o tworzeniu szablonów pakietów kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

908018 jak utworzyć szablon pakietu w SQL Server Business Intelligence Development Studio



Aby uzyskać więcej informacji dotyczących zabezpieczeń pakietu SSIS i właściwość ProtectionLevel zobacz temat "Zabezpieczeń zagadnienia dla Integration Services" w dokumentacji programu SQL Server 2005 Books Online.

Niestety użytkownicy nie mają świadomości, że domyślne ustawienia krok zadanie Agenta umieścić je w tym stanie. Aby uzyskać więcej informacji na temat programu SQL Server Agent proxy i SSIS zobacz następujące tematy w dokumentacji programu SQL Server 2005 Books Online:
  • Planowanie wykonywania pakietu w programie SQL Server Agent
  • Tworzenie proxy agenta programu SQL Server