web-dev-qa-db-fra.com

SSIS: Je viens juste de commencer à recevoir une "clé non valide pour une utilisation dans un état spécifié". erreur sur mon package SSIS planifié

J'ai deux tâches planifiées sur mon ordinateur SQL Server 2005 qui doivent être exécutées chaque matin (vers 2 heures du matin). Ces emplois ont bien fonctionné (la plupart du temps) pendant des années et, bien que j’ai eu quelques ratés, j’ai dû surmonter ce problème me stoppe complètement.

Il y a deux matins, l'un de mes paquets a commencé à signaler l'erreur suivante:

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.

Cela semble être un problème courant, cependant, aucune des recommandations que j'ai trouvées ne s'applique à mon scénario et mon instance ne semble pas non plus correspondre à la plupart des autres cas où cela se produit. Voici les détails importants concernant ma mise en œuvre.

  • Ce package exporte des données d’un système iSeries vers des tables de données SQL Server 2005. 
  • Ce processus fonctionne avec succès, mais continue de planter Sur une exportation de table spécifique. En fait, il fonctionne sans problème Pendant plus de 2 heures avant de mourir. Après avoir inspecté toutes les propriétés Associées à cette étape, je constate que cette étape N’a rien de différent des autres étapes d’exportation de table, à l’exportation de la table/colonne . cartographies.
  • Le package ProtectionLevel est défini sur DontSaveSensitive et les informations d'identification iSeries Sont stockées dans un fichier de configuration accessible par SQL Server. 
  • Je peux exécuter l'étape défaillante sur ma machine, dans BIDS. Quoi qu'il en soit, Ne fonctionne pas sur le serveur, même si celui-ci utilise exactement les mêmes informations d'identification.
  • Comme je l'ai mentionné, j'ai deux paquets. En réalité, il s’agit de la même chose, sauf que Exporte les données d’une base de données iSeries et que l’autre exporte des données qui sont presque identiques à celles d’une autre base de données iSeries. Le premier package Ne présente aucun problème, même s'il utilise les mêmes informations d'identification iSeries.
  • Pour être clair, rien sur mon serveur n’a changé depuis des mois (à ma connaissance.) Ce A commencé à se produire hier matin.

Toute astuce ou pensée serait extrêmement utile. Cette exportation est extrêmement importante et de nombreux utilisateurs/travailleurs s’appuient sur ces données pour leur travail quotidien.

9
RLH

Eh bien, je déteste devoir poster une telle réponse mais j'ai résolu le problème.

La raison courte pour laquelle j’ai eu ce problème est qu’un des champs d’une table de données n’était pas défini correctement. Dans ce cas, il a été déclaré en tant que decimal (11, 3) et aurait dû être un decimal (13, 3). Je n'ai pas rencontré ce problème jusqu'à ce qu'une valeur soit ajoutée à la table et ne corresponde pas à la plage (11, 3).

Ce numéro met en lumière l’un de mes plus gros problèmes avec SSIS. À l'occasion, j'obtiens des erreurs souvent bien documentées sur Internet. Je recherche dans tous mes journaux et j'essaie de configurer différents scénarios de test en supposant que le message d'erreur est honnête. Pourtant, lorsque je résous enfin le problème, il n’ya aucun lien avec le message d’erreur écrit dans le fichier journal.

Dans ce cas, l'erreur mentionnée ci-dessus n'avait absolument rien à voir avec le problème?! En fait, j'ai eu beaucoup de chance de voir le problème du tout. Je savais que la mise à jour sur ma table pourrait être un correctif potentiel car J'ai déjà vu SSIS communiquer de cette manière auparavant .

J'aimerais blâmer les neutrinos venus de l'espace qui bombardent mon serveur, mais le mieux est de tenter de résoudre vos problèmes SSIS en vous basant sur les conseils d'autres personnes, cependant , si leurs conseils n'aide pas, réalise que le problème peut ne pas être lié au message d'erreur SSIS et triple-vérifier tout ce qui est associé au point de défaillance.

12
RLH

Je ne pouvais pas poster l'image dans les commentaires, donc en la postant comme réponse. 

Lorsque vous essayez d'importer le package vers SQL Server, dès que vous cliquez avec le bouton droit de la souris et effectuez la commande "Importer le package", vous obtenez la fenêtre suivante.

enter image description here

Cliquez sur le rectangle à droite de la fenêtre. Cela vous donnera la possibilité de changer le niveau de protection du paquet. Changez-le en "Ne pas enregistrer sensible" et essayez d'exécuter le paquet. Attention, vous devrez supprimer le package existant, puis le réimporter. Donc, vous voudrez peut-être essayer sur une autre machine avant de toucher à la configuration existante. 

5
rvphx

Pour moi, il ne s'agissait que du mot de passe d'un gestionnaire de connexions dans SSIS, qui n'a pas été enregistré. Entrez le mot de passe -> OK-> fermez le fichier DTSX et rouvrez-le. Erreur parti.

4
Vijay

Couru dans le même message d'erreur dans SQL Server 2012. Pour moi, le redémarrage de SQL Server Management Studio a résolu le problème. Ce problème était probablement dû au changement de mot de passe de mon domaine il y a quelques jours alors que SSMS était ouvert. Si vous rencontrez un problème similaire qui ne disparaît pas avec un simple redémarrage, vérifiez que Control Panel\User Accounts\Credential Manager contient les informations du compte mis en cache et/ou essayez un redémarrage.

3
GrayDwarf

Ouvrez le paquet dtsx puis allez dans les propriétés, définissez ProtectionLevel EncryptSensitiveWithPassword et entrez le mot de passe. Connectez le paquet sous forme de travail serveur sql avec le même mot de passe.

Voir http://support.Microsoft.com/kb/918760 et http://www.mssqltips.com/sqlservertip/2091/securing-your-ssis-packages-using-package-protection-protection-level/

0
Shahdat

Il s'agit d'une solution de contournement pour éviter le problème de la sauvegarde des mots de passe sensibles dans le package. 

J'ai supprimé la tâche FTP et utilisé une tâche de système de fichiers au lieu de copier le fichier au même emplacement via un partage réseau sur le serveur FTP, sans utiliser le protocole FTP. 

J'ai également pu enregistrer le package dans le système de fichiers au lieu du magasin de serveur SQL, et tout s'est bien déroulé.

Espérons que cela vous aide!

0
Hiram