Pacchetto SSIS non viene eseguito quando viene chiamato da un passaggio di processo SQL Server Agent

IMPORTANTE: il presente articolo è stato tradotto tramite un software di traduzione automatica di Microsoft ed eventualmente revisionato dalla community Microsoft tramite la tecnologia CTF (Community Translation Framework) o da un traduttore professionista. Microsoft offre articoli tradotti manualmente e altri tradotti automaticamente e rivisti dalla community con l’obiettivo di consentire all'utente di accedere a tutti gli articoli della Knowledge Base nella propria lingua. Tuttavia, un articolo tradotto automaticamente, anche se rivisto dalla community, non sempre è perfetto. Potrebbe contenere errori di vocabolario, di sintassi o di grammatica. Microsoft declina ogni responsabilità per imprecisioni, errori o danni causati da una traduzione sbagliata o dal relativo utilizzo da parte dei clienti. Microsoft aggiorna frequentemente il software e gli strumenti di traduzione automatica per continuare a migliorare la qualità della traduzione.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 918760
Sintomi
Quando si chiama un pacchetto di Microsoft SQL Server 2005 Integration Services (SSIS) da un passaggio del processo di Agente SQL Server, il pacchetto SSIS non viene eseguito. Tuttavia, se non si modificano il pacchetto SSIS, verrà eseguito correttamente di fuori di SQL Server Agent.
Risoluzione
Per risolvere questo problema, utilizzare uno dei metodi descritti di seguito. Il metodo più appropriato dipende dall'ambiente e il motivo per cui il pacchetto non riuscito. Di seguito sono riportati i motivi per cui il pacchetto non è riuscito:
  • L'account utente utilizzato per eseguire il pacchetto in Agente SQL Server differisce dall'autore del pacchetto originale.
  • L'account utente non dispone delle autorizzazioni necessarie per le connessioni o per accedere alle risorse all'esterno del pacchetto SSIS.
Il pacchetto non venga eseguito nei seguenti scenari:
  • L'utente corrente non è in grado di decrittografare i segreti dal pacchetto. Questo scenario può verificarsi se il conto corrente o l'account di esecuzione è diverso dall'autore del pacchetto originale e impostazione della proprietà ProtectionLevel del pacchetto non è possibile decrittografare i segreti nel pacchetto dell'utente corrente.
  • Una connessione di SQL Server che utilizza la protezione integrata non riesce perché l'utente corrente non dispone delle autorizzazioni necessarie.
  • Accesso ai file non riesce perché l'utente corrente non dispone delle autorizzazioni necessarie per scrivere la condivisione di file che accede a connection manager. Ad esempio, questo scenario può verificarsi con i provider di log di testo che non utilizzano un account di accesso e una password. Questo scenario può verificarsi anche con tutte le attività che dipende la gestione connessione file, ad esempio un'attività di sistema del file SSIS.
  • Un registro di sistema pacchetto SSIS utilizza le chiavi di registro HKEY_CURRENT_USER. Le chiavi di registro HKEY_CURRENT_USER sono specifici dell'utente.
  • Un'attività o una gestione connessione richiede che l'account utente corrente disponga delle autorizzazioni corrette.
Metodo 1: Utilizzare un account proxy di Agente SQL Server
Creare un account proxy di Agente SQL Server. Questo account proxy è necessario utilizzare credenziali che Agente SQL Server è possibile eseguire il processo come account che ha creato il pacchetto o un account che dispone delle autorizzazioni necessarie.

Questo metodo può essere utilizzata per decrittografare i segreti e soddisfa i requisiti chiavi dall'utente. Tuttavia, questo metodo potrebbe essere limitato successo poiché le chiavi utente del pacchetto SSIS coinvolgono l'utente corrente e il computer corrente. Pertanto, se si sposta il pacchetto a un altro computer, questo metodo potrebbe comunque non riuscire, anche se il passaggio di processo utilizza l'account proxy corretto.

Metodo 2: Impostare la proprietà ProtectionLevel pacchetto SSIS ServerStorage
Modificare la proprietà del pacchetto SSIS ProtectionLevel ServerStorage. Questa impostazione consente di archiviare il pacchetto in un database di SQL Server e consente di controllare l'accesso tramite i ruoli di database di SQL Server.

Metodo 3: Impostare la proprietà ProtectionLevel pacchetto SSIS EncryptSensitiveWithPassword
Modificare la proprietà del pacchetto SSIS ProtectionLevel per EncryptSensitiveWithPassword. Questa impostazione viene utilizzata una password per la crittografia. È quindi possibile modificare la riga di comando del passaggio di processo di Agente SQL Server per includere la password.

Il metodo 4: I file di configurazione del pacchetto SSIS utilizzare
Utilizzare i file di configurazione del pacchetto SSIS per memorizzare informazioni riservate e quindi archiviare questi file di configurazione in una cartella protetta. È quindi possibile modificare la proprietà ProtectionLevel per DontSaveSensitive in modo che il pacchetto non è crittografato e non tenta di salvare i segreti del pacchetto. Quando si esegue il pacchetto SSIS, le informazioni necessarie vengono caricate dal file di configurazione.Assicurarsi che i file di configurazione siano adeguatamente protetti, anche se contengono informazioni riservate.

Metodo 5: Creare un modello di pacchetto
Per una risoluzione a lungo termine, è possibile creare un modello di pacchetto che utilizza un livello di protezione è diverso da quello predefinito. Questo problema non si verifica in un package.
Status
Questo comportamento è legato alla progettazione.
Informazioni avanzate

Procedura per riprodurre il problema

  1. Accedere come utente non fa parte del gruppo SQLServer2005SQLAgentUser. Ad esempio, è possibile creare un utente locale.
  2. Creare un pacchetto SSIS e quindi aggiungere un'attività ExecuteSQL. Utilizzare un gestore di connessione OLE DB per il file locale msdb utilizzando la seguente stringa: "Windows Authentication"-SQLSourceType: "Diretta Input"-SQLStatement: "sp_who"
  3. Eseguire il pacchetto per assicurarsi che funzioni correttamente.
  4. Si noti che la proprietà ProtectionLevel è impostata su EncryptSensitiveWithPassword.
  5. Creare un processo di Agente SQL Server e un passaggio di processo. Nel Esegui come elenco fare clic su Servizio di Agente SQL Server Per eseguire il passaggio di processo.
Il testo nella cronologia dei processi di Agente SQL Server vengono visualizzate informazioni analoghe alle seguenti:

Eseguito come utente: dominio\nomeutente. L'esecuzione del pacchetto non riuscita. Il passaggio non riuscito.

Decrittografare i segreti del pacchetto

L'impostazione predefinita per il pacchetto SSIS proprietà ProtectionLevel è EncryptSensitiveWithUserKey. Quando il pacchetto viene salvato, SSIS consente di crittografare solo le parti del pacchetto che contengono le proprietà contrassegnate come "riservate" come password, nomi utente e le stringhe di connessione. Pertanto, quando il pacchetto viene ricaricato, l'utente corrente deve soddisfare i requisiti di crittografia per le proprietà riservate da decrittografare. Tuttavia, l'utente corrente non dispone di soddisfare i requisiti di crittografia per caricare il pacchetto. Quando si esegue il pacchetto tramite un passaggio di processo di Agente SQL Server, l'account predefinito è l'account del servizio di Agente SQL Server. Questo account è molto probabile che un utente diverso dall'autore del pacchetto. Pertanto, il passaggio del processo di Agente SQL Server è possibile caricare e avviare l'esecuzione del passaggio del processo, ma il pacchetto non riesce perché non riesce a completare una connessione. Ad esempio, il pacchetto Impossibile completare una connessione OLE DB o una connessione FTP. Il pacchetto non riesce perché Impossibile decrittografare le credenziali necessarie per connettersi.

Importante.  Considerare il processo di sviluppo e l'ambiente per determinare quali account sono necessari e utilizzati in ogni computer. L'impostazione di EncryptSensitiveWithUserKey della proprietà ProtectionLevel è un potente. Questa impostazione non dovrebbe essere scontata a causa di problemi di distribuzione a prima. È possibile crittografare i pacchetti quando si è connessi all'account appropriato. Inoltre, è possibile utilizzare l'utilità della riga di comando SSIS Dtutil.exe per modificare i livelli di protezione utilizzando un file. cmd e il sottosistema di comando di Agente SQL Server. Ad esempio, attenersi alla seguente procedura. Poiché è possibile utilizzare l'utilità Dtutil.exe in cicli e file batch, è possibile attenersi alla seguente procedura per i diversi pacchetti nello stesso momento.
  1. Modificare il pacchetto che si desidera crittografare con una password.
  2. Utilizzare l'utilità Dtutil.exe tramite un Sistema operativo (Exec cmd) Passaggio del processo di Agente SQL Server per modificare la proprietà ProtectionLevel per EncryptSensitiveWithUserKey. Questo processo implica la decrittografia del pacchetto utilizzando la password e quindi crittografare nuovamente il pacchetto. La chiave utente che viene utilizzata per crittografare il pacchetto è il passaggio di processo SQL Server Agent impostazione nelEsegui come elenco.

    Nota. Poiché la chiave include il nome utente e il nome del computer, l'effetto di spostare i pacchetti a un altro computer potrebbe essere limitato.

Assicurarsi che disponga di dettagliate informazioni sull'errore relative all'errore del pacchetto SSIS

Invece di basarsi sui dettagli limitati nella cronologia dei processi di Agente SQL Server, è possibile utilizzare SSIS registrazione per assicurarsi di disporre di informazioni sull'errore relative all'errore del pacchetto SSIS. È inoltre possibile eseguire il pacchetto utilizzando il comando di sottosistema exec anziché il comando di sottosistema SSIS.

Sulla registrazione di SSIS

Provider di registrazione e di log SSIS consentono di acquisire informazioni dettagliate sull'esecuzione del pacchetto e gli errori. Per impostazione predefinita, il pacchetto non registra le informazioni. È necessario configurare il pacchetto per registrare le informazioni. Quando si configura il pacchetto per registrare le informazioni, verranno visualizzate informazioni dettagliate che è simile al seguente. In questo caso, si saprà che si tratta di un problema di autorizzazioni:

OnError, NomeDominio, nomedominio\nomeutente, FTP Task,{C73DE41C-D0A6-450A-BB94-DF6D913797A1},{2F0AF5AF-2FFD-4928-88EE-1B58EB431D74},4/28/2006 1:51:59 PM, 28/4/2006:1:51: 59 PM,-1073573489, 0 x, Impossibile connettersi al server FTP con "FTP Connection Manager".

OnError, NomeDominio, nomedominio\nomeutente, Execute SQL Task,{C6C7286D-57D4-4490-B12D-AC9867AE5762},{F5761A49-F2F9-4575-9E2B-B3D381D6E1F3},4/28/2006 4:07:00 PM, 28/4/2006:4:07: 00 PM,-1073573396, 0 x, non è riuscito ad acquisire la connessione "user01.msdb". Connessione non sia configurato correttamente o non si disponga delle autorizzazioni appropriate per la connessione.

Sul comando di sottosistema exec e informazioni di output

Utilizzando l'approccio di comando di sottosistema exec, è possibile aggiungere opzioni di registrazione alla riga di comando SSIS per chiamare il file eseguibile della riga di comando SSIS Dtexec.exe nella console dettagliata. È inoltre possibile utilizzare la funzionalità avanzate del processo del file di output. È inoltre possibile utilizzare il Includi Output passaggio nella cronologia opzione per reindirizzare le informazioni di registrazione in un file o alla cronologia dei processi di Agente SQL Server.

Di seguito è riportato un esempio di una riga di comando:

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


La registrazione /console restituisce dettagli analoghi ai seguenti:

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
Riferimenti
Per ulteriori informazioni su un problema analogo, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
904800Viene visualizzato un messaggio di errore "Errore durante il caricamento" quando si tenta di eseguire un pacchetto di SQL Server 2005 Integration Services in SQL Server 2005
Per ulteriori informazioni su come utilizzare l'utilità Dtutil.exe nelle operazioni batch, fare clic sul seguente numero di articolo per visualizzare l'articolo della Microsoft Knowledge Base:
906562Come utilizzare l'utilità dtutil (Dtutil.exe) per impostare il livello di protezione di un batch di pacchetti di SQL Server Integration Services (SSIS) in SQL Server 2005
Per ulteriori informazioni su come creare modelli di pacchetto, fare clic sul numero dell'articolo riportato di seguito per visualizzare l'articolo della Microsoft Knowledge Base:
908018Come creare un modello di pacchetto in SQL Server Business Intelligence Development Studio


Per ulteriori informazioni sulla protezione dei pacchetti SSIS e la proprietà ProtectionLevel , vedere l'argomento "Security Considerations per Integration Services" nella documentazione in linea di SQL Server 2005.

Sfortunatamente, gli utenti non sono consapevoli che impostazioni passaggio processo agente di default inseriscano in questo stato.Per ulteriori informazioni sul proxy di Agente SQL Server e SSIS, vedere i seguenti argomenti nella documentazione in linea di SQL Server 2005:
  • Pianificazione dell'esecuzione del pacchetto in SQL Server Agent
  • Creazione di proxy di Agente SQL Server

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 918760 - Ultima revisione: 07/16/2013 02:01:00 - Revisione: 3.1

Microsoft SQL Server 2008 Service Pack 1, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2005 Service Pack 3, Microsoft SQL Server 2005 Service Pack 2, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems, Microsoft SQL Server 2005 Enterprise X64 Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Standard X64 Edition, Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems

  • kbsqlsetup kbprb kbsql2005ssis kbsql2005setup kbexpertiseinter kbexpertiseadvanced kbtshoot kbmt KB918760 KbMtit
Feedback