Direktivy SSI balíček se nespustí při volání z kroku úloha Agent serveru SQL Server

Příznaky

Při volání z kroku úloha Agent serveru SQL Server Microsoft SQL Server 2005 Integration Services (SSIS) balíček, direktivy SSI balíček se nespustí. Však pokud není upravit balíček direktivy SSI, bude spuštěna úspěšně mimo SQL Server Agent.

Řešení

Chcete-li vyřešit tento problém, použijte jednu z následujících metod. Nejvhodnější způsob závisí na prostředí a důvod, proč balíčku se nezdařilo. Důvody, které by mohlo dojít k selhání balíčku jsou následující:
  • Uživatelský účet, který slouží ke spuštění balíčku pod SQL Server Agent se liší od původní autor balíček.
  • Uživatelský účet nemá požadovaná oprávnění k vytvoření připojení nebo přístup k prostředkům vně balíčku direktivy SSI.
Balíček nelze spustit v následujících situacích:
  • Aktuální uživatel nemůže dešifrovat tajné klíče z balíčku. V tomto scénáři může dojít, pokud aktuální účet nebo účet provedení se liší od původní autor balíčku a balíčku ProtectionLevel vlastnost nastavení neumožňuje aktuálního uživatele dešifrovat tajné klíče v balíčku.
  • Připojení k serveru SQL, který používá integrované zabezpečení se nezdaří, protože aktuální uživatel nemá požadovaná oprávnění.
  • Přístup k souboru se nezdaří, protože aktuální uživatel nemá požadovaná oprávnění k zápisu do sdílené položky, který přistupuje k programu connection manager. Například v tomto scénáři může dojít se text zprostředkovatelů protokolu, které nepoužívají přihlašovacího jména a hesla. V tomto scénáři může nastat také u libovolného úkolu, který je závislý na souboru programu connection manager jako systémový úkol direktivy SSI souboru.
  • Založené na registru konfigurace balíčku SSIS používá klíče registru HKEY_CURRENT_USER. Klíče registru HKEY_CURRENT_USER jsou specifické pro uživatele.
  • Úkol nebo Správce připojení vyžaduje, aby aktuální uživatelský účet má správná oprávnění.
Metoda 1: Použití účet SQL Server Agent serveru proxy
Vytvořte účet serveru proxy Agent serveru SQL Server. Tento účet serveru proxy použít pověření, která umožňuje SQL Server Agent úlohu spustit pod účtem, který balíček vytvořil, nebo jako účet, který má potřebná oprávnění.

Tuto metodu lze použít k dešifrování tajemství a splňuje požadavky na klíče uživatelem. Však tato metoda omezená úspěch protože zahrnují SSIS balíček uživatelské klíče aktuálního uživatele a aktuální počítač. Proto balíček přesunete do jiného počítače, tato metoda může nezdaří, i když krok úloha používá účet serveru proxy správné.


Metoda 2: Nastavte vlastnost ProtectionLevel SSIS balíček ServerStorage
Změňte vlastnost balíček SSIS ProtectionLevel ServerStorage. Toto nastavení ukládá balíček v databázi serveru SQL Server a umožňuje řízení přístupu prostřednictvím rolí databáze serveru SQL Server.

Metoda 3: Nastavte vlastnost ProtectionLevel SSIS balíček EncryptSensitiveWithPassword
Změňte vlastnost balíček SSIS ProtectionLevel EncryptSensitiveWithPassword. Toto nastavení používá heslo pro šifrování. Pak můžete upravit krok úlohy SQL Server Agent příkazového řádku zahrnout toto heslo.


Metoda 4: Použití balíčku SSIS konfigurační soubory
Ukládání citlivých informací pomocí balíčku SSIS konfigurační soubory a potom tyto konfigurační soubory uložit v zabezpečené složce. Potom změníte vlastnost ProtectionLevel na DontSaveSensitive, takže balíček není šifrováno a ne pokusit uložit tajemství balíček. Při spuštění balíčku SSIS požadované informace je načten z konfiguračního souboru. Ujistěte se, že konfigurační soubory jsou náležitě chráněny pokud obsahují citlivé informace.


Metoda 5: Vytvoření šablony balíčku
Dlouhodobé řešení vytvořte šablonu balíček, který používá úroveň ochrany, která se liší od výchozího nastavení. K tomuto problému v budoucnu nedojde, balíčky.

Stav

Toto chování je záměrné.

Upřesňující informace

Kroky pro reprodukci problému

  1. Přihlaste se jako uživatel, který není součástí skupiny SQLServer2005SQLAgentUser. Můžete například vytvořit místní uživatel.
  2. Vytvoření balíčku SSIS a potom přidat úkol ExecuteSQL. Pomocí Správce připojení OLE DB k souboru místní msdb následující řetězec: "Ověřování systému Windows" - SQLSourceType: "Přímý vstup" - SQLStatement: "sp_who"
  3. Spusťte balíček, abyste se ujistili, že běží úspěšně.
  4. Všimněte si, že je vlastnost ProtectionLevel nastavena na EncryptSensitiveWithPassword.
  5. Vytvořte SQL Server Agent úlohy a úlohy kroku. V seznamu Spustit jako klepněte na tlačítko spuštění úloha krok SQL Server Agent Service .
Text v historii úlohy SQL Server Agent zobrazí se informace podobná následující:

Dešifrování tajemství balíček

Výchozí nastavení pro balíček SSIS ProtectionLevel vlastnost je EncryptSensitiveWithUserKey. Při uložení balíček SSIS šifruje pouze části balení, které obsahují vlastnosti, které jsou označeny jako "důvěrné," jako jsou hesla, uživatelská jména a připojovací řetězce. Proto pokud balíček je znovu aktuální uživatel musí splňovat požadavky na šifrování citlivých vlastností má být dešifrován. Aktuální uživatel však nemusí splňovat požadavky na šifrování načíst balíček. Když spustíte balíček prostřednictvím krok úloha Agent serveru SQL Server, výchozí účet je účet služba Agent serveru SQL. Tento výchozí účet je pravděpodobně jiný uživatel než autorovi balíčku. Proto můžete načíst a spustit spuštění úloha krok krok úloha Agent serveru SQL Server, ale balíček se nezdaří, protože nemůže dokončit připojení. Například balíček nelze dokončit připojení technologie OLE DB nebo připojení FTP. Balíček se nezdaří, protože jej nelze dešifrovat pověření, které musí mít pro připojení.


Důležité: Zvažte procesu rozvoje a životního prostředí určují účty, které jsou nutné a v každém počítači. EncryptSensitiveWithUserKey nastavení vlastnosti ProtectionLevel je výkonný nastavení. Toto nastavení by nemělo uvažují, protože způsobuje komplikace při nasazení na první. Balíčky můžete zašifrovat, když jste přihlášeni na příslušný účet. Nástroj příkazového řádku Dtutil.exe SSIS můžete použít také ke změně úrovně ochrany pomocí souboru CMD a subsystému Agent serveru SQL Server. Například postupujte takto. Vzhledem k tomu, že pomocí nástroje Dtutil.exe v dávkových souborech a smyčky, můžete postupujte takto několik balíčků ve stejnou dobu.
  1. Upravte balíček, který chcete zašifrovat pomocí hesla.
  2. Pomocí nástroje Dtutil.exe prostřednictvím krok úloha Agent serveru SQL Server operačního systému (cmd Exec) změňte vlastnost ProtectionLevel hodnotu EncryptSensitiveWithUserKey. Tento proces zahrnuje dešifrování pomocí hesla a znovu šifrovaného balíčku balíček. Uživatelský klíč, který slouží k šifrování balíček je krok úloha Agent serveru SQL Server, nastavení v seznamu Spustit jako .

    Poznámka: Vzhledem k tomu, že klíč obsahuje uživatelské jméno a název počítače, může být omezena vliv na pohyb balíčky do jiného počítače.

Ujistěte se, že mají podrobné chybové informace o chybě balíčku SSIS

Namísto spoléhání se na omezené podrobnosti v historii úlohy SQL Server Agent, můžete použít protokolování a ujistěte se, že chyba informace o chybě balíčku SSIS SSIS. Balíček lze také spustit pomocí příkazu exec subsystému místo příkazu SSIS podsystém.

O protokolování SSIS

Zprostředkovatelé protokolování a protokolu SSIS umožňují zaznamenat informace o spuštění balíčku a selhání. Ve výchozím nastavení balíčku nezaznamenává informace. Je nutné nakonfigurovat balíček do protokolu informace. Pokud nakonfigurujete balíček do protokolu informace, zobrazí se podrobné informace podobná následující. V takovém případě budete vědět, že se jedná o problém s oprávněními:

O příkazu exec subsystému a výstupní informace

S využitím metody příkazu exec subsystému, přidání přepínače příkazového řádku SSIS volání direktivy SSI Dtexec.exe příkazového řádku spustitelného souboru protokolování verbose konzoly. Navíc použít funkci Rozšířené úlohy výstupního souboru. Můžete také Zahrnout výstup kroku v historii možnost přesměrovat protokolování informací do souboru nebo SQL Server Agent úlohy historie.

Následuje příklad příkazového řádku:

dtexec.exe /FILE "C:\_work\SSISPackages\ProtectionLevelTest\ProtectionLevelTest\AgentTesting.dtsx" /MAXCONCURRENT " -1 
" /CHECKPOINTING OFF /REPORTING V /CONSOLELOG NCOSGXMT



Přihlášení/Console vrátí podrobné informace podobné následujícím:

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:34
End Log

Odkazy

Další informace o podobném problému klepněte na následující číslo článku databáze Microsoft Knowledge Base:

904800 zobrazí chybová zpráva "Chyba při načítání" při pokusu o spuštění balíčku SQL Server 2005 Integration Services v SQL Server 2005

Další informace o použití nástroje Dtutil.exe dávkové operace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:

906562 jak nastavit úroveň ochrany dávkové SQL Server Integration Services (SSIS) balíčky v SQL Server 2005 pomocí dtutil nástroj (Dtutil.exe)

Další informace o tom, jak vytvořit šablony balíčku, klepněte na následující číslo článku databáze Microsoft Knowledge Base:

908018 jak vytvořit šablonu balíček v SQL Server Business Intelligence Development Studio



Další informace o zabezpečení balíčku SSIS a ProtectionLevel vlastností naleznete v tématu "Zabezpečení důležité informace pro Integration Services" v SQL Server 2005 Books Online.

Bohužel uživatelé nejsou vědomi, že nastavení agenta úloha krok, vložit je do tohoto stavu. Další informace o SQL Server Agent proxy a SSIS naleznete v následujících tématech v SQL Server 2005 Books Online:
  • Plánování spuštění balíčku v Agent serveru SQL Server
  • Vytvoření proxy Agent serveru SQL Server
Vlastnosti

ID článku: 918760 - Poslední kontrola: 16. 1. 2017 - Revize: 1

Váš názor