2017-09-05 4 views
1

Je copie des paquetages SSIS d'un serveur SQL à un autre dans un programme C# via DTUTIL. Les paquets sont en MSDB.Récupère le nom du paquet SSIS avec C#

string dtutilCmd = "/c DTUTIL /SOURCESERVER " + sourceServer + " /SQL " + myPackage + " /DestServer " + destServer + " /COPY " + myPackage; 

System.Diagnostics.Process process = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
startInfo.FileName = "cmd.exe"; 
startInfo.Arguments = dtutilCmd; 
process.StartInfo = startInfo; 
process.Start(); 

Les variables de la chaîne dtutilCmd sont toutes les chaînes. Le problème est que lorsque mes utilisateurs entrent le nom du paquet, ils peuvent se tromper. Ils peuvent écrire MYPACKAGE afin qu'il soit déployé comme MYPACKAGE, même s'il existe réellement sous la forme MyPackage sur le serveur source, que je souhaite conserver.

Je veux donc récupérer le nom du paquet et l'insérer dans la dernière partie de ma chaîne dtutilCmd.

Répondre

1

Tout ce que vous devez faire est d'utiliser la classe 'Application' de l'espace de noms Microsoft.Dts.Runtime. Vous établissez ensuite une connexion en utilisant cela et obtenez les informations sur les paquets à partir de la MSDB.

Voici le lien qui donne plus de détails sur la façon de s'y prendre pour le faire programatically - Enumerating Available Packages Programmatically

+0

J'ai commencé à travailler. Pour les gens de l'avenir, le code ne fonctionnera pas tout à fait, il a besoin de beaucoup de peaufinage, mais la solution est légitime. – coinbird

0

Extrait de votre catalogue de services d'intégration à ISPAC. Ouvrez-le avec SSDT et déployez-le sur votre nouveau serveur. Beaucoup plus facile.

+0

Pourquoi ai-je un moins pour cela? Il n'y a aucun intérêt à copier les paquets ssis entre les serveurs en utilisant DTUTIL ... – plaidDK

+0

Je ne vous ai pas déprécié, mais je ne sais pas non plus ce que signifie votre solution. La copie de paquets entre les serveurs avec DTUTIL est la seule façon de savoir comment le faire via un programme C#. Mon programme fait beaucoup de choses, donc le déploiement d'un paquet SSIS doit absolument être fait à 100% dans le programme C#. Pas d'ouverture SSMS ou quoi que ce soit sur le côté. – coinbird