[SQL Server 2005] Exporter une table vers un fichier texte via SSIS

Exporter une table vers un fichier texte via SSIS [SQL Server 2005] - SQL/NoSQL - Programmation

Marsh Posté le 01-09-2010 à 11:33:29    

Bonjour,
Comme le titre l'indique, je dois exporter une table vers un fichier texte via un package SSIS.
J'ai créé le package (avec SQL server Business Intelligence Developpement Studio  integration service project ).
Lorsque je lance le start Debugging tout se déroule normalement, j'ai bien mon fichier texte en sortie ==> tout roule.
 
Je build donc mon projet.DTSX.
Depuis la console SQL Server management studio, je l'ajoute dans l'Integration services du serveur sous Stored PackagesFile systempackage. ==> clique droit sur le package, run ==> ca fonctionne.
Depuis l'Execute package utility (qui a fait tourné correctement le package) menu Command Line je copie la commande générée, et j'essaie de lancer cette commande depuis une query SQL, ca donne :
 
 

Code :
  1. DECLARE @chaine   varchar(2048)   SELECT @chaine='DTEXEC /DTS "File SystemPackage" /SERVER "xxxxx" /MAXCONCURRENT " -1 " /CHECKPOINTING OFF  /REPORTING V '
  2. EXEC xp_cmdshell @chaine
  3. [b][/b]


 
mais lorsque je l'éxécute il me fait une erreur :
 
   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.  
 
J'éxécute la query SQL en tant que 'sa'.
D'apres de ce que j'ai vu sur internet j'ai essayer de changer la propriété "SecurityProtection Level", mais a seule différence obtenue est lors de l'ajout du package dans l'Integration services il me demande un mot de passe c'est tout, meme message d'erreur.
 
Voili voilou, si quelqu'un a une idée sur où chercher je suis preneur !
 
merci +++
Fine.

Reply

Marsh Posté le 01-09-2010 à 11:33:29   

Reply

Marsh Posté le 01-09-2010 à 14:05:04    

C'est pas une question de droit d'accès (lecture/écriture) sur le fichier ?

Reply

Marsh Posté le 01-09-2010 à 15:09:29    

Les infos sensibles d'un package SSIS sont toujours encryptee (ou carement effacee).
Par defaut les infos sont encryptee avec le user key, donc celui qui a sauvé le package dans msdb (ou dans une directory) est le seul a pouvoir le faire tourner. C'est pour ca que ca marche avec click droit -> Run (il le fait tourner avec ton compte).
 
Par contre ca marche pas avec xp_cmdshell, car xp_cmdshell utilises toujours le compte qui fait tourner le service MSSQLSERVER, different user -> probleme pour decrypter le package -> erreur.
 
Si tu veux executer ton package depuis xp_cmdshell tu dois sauver le package et utiliser un mot de passe (Encrypt Sensitive data with Password), dans ta ligne de commande DTExec tu peux utiliser /P pour donner le mot de passe, ou alors tu t'arranges pour sauver le package avec le compte qui fait tourner le service SQL Server.


Message édité par Oliiii le 01-09-2010 à 15:10:53
Reply

Marsh Posté le 02-09-2010 à 08:03:26    

OK, merci pour la réponse je vais tester cela !  

Reply

Marsh Posté le 02-09-2010 à 08:16:38    

Alors, j'essaie la commande avec un /P et j'ai ce message d'erreur :  
The DTS option cannot be specified with the File, SQL, User, or Password options.
 
SELECT @chaine='DTEXEC /DTS "\File System\Package" /SERVER "xxxxx" /P xxxxx /MAXCONCURRENT " -1 " /CHECKPOINTING OFF  /REPORTING V '
EXEC xp_cmdshell @chaine  
 
 
Sinon j'ai essayé aussi avec le parametre /De (decrypt).
 
DECLARE @chaine   varchar(2048)    
 
SELECT @chaine='DTEXEC /DTS "\File System\Package" /SERVER "xxxxxx" /De xxxxxx /MAXCONCURRENT " -1 " /CHECKPOINTING OFF  /REPORTING V '
EXEC xp_cmdshell @chaine  
 
et j'ai l'erreur :
   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
 
Je vais maintenant regarder avec quel compte windows le MS SQL Server tourne pour builder le package avec celui-ci.

Reply

Marsh Posté le 02-09-2010 à 08:22:56    

Tu as bien resauvé ton package avec Encrypt with password et pas user key?

Reply

Marsh Posté le 02-09-2010 à 08:23:22    

Ah, le serveur est en "Local System" .... on peut créer un package depuis ce compte ?

Reply

Marsh Posté le 02-09-2010 à 08:40:29    

Oliiii a écrit :

Tu as bien resauvé ton package avec Encrypt with password et pas user key?


Oui, d'ailleurs lorsque j'ajoute le package dans L'integration services il me demande le mot de passe, et si je ne met pas le bon ca me le redemande.

Reply

Marsh Posté le 02-09-2010 à 09:36:11    

Si tu peux te logguer avec le compte tu devrais pouvoir le sauver

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed