Bonjour,
Je souhaite appeler un package installé sur un serveur 2008R2 via Visual Studio. Comme la version du Framework est le 2.0, j'ai du changé le Framework de mon projet pour être en 2.0.
J'ai appelé la dll Microsoft.SQLServer.ManagedDTS au bon endroit.
L'appel fonctionne bien via le code :
Petite indication : Il s'agit d'une application Form avec un btn_Action qui déclenche l'appel du package. This est la form et txt_Log est un textbox dans la forme qui va recevoir les informations de progression du package.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 private void btn_Action_Click(object sender, EventArgs e) { SSIS.Package pkg = new SSIS.Package(); SSIS.Application app; SSIS.DTSExecResult pkgResults; app = new SSIS.Application(); Cursor.Current = Cursors.WaitCursor; txt_Log.BackColor = Color.Yellow; pkg = app.LoadFromSqlServer(@"\\MonPackage", "monserveur",null,null,this); pkgResults = pkg.Execute(); Cursor.Current = Cursors.Default; if (pkgResults == SSIS.DTSExecResult.Success) { txt_Log.BackColor = Color.LawnGreen; } else { txt_Log.BackColor = Color.Red; foreach (SSIS.DtsError err in pkg.Errors) { txt_Log.Text += err.Description + "\n"; } } }
Pour ceux qui ont un peu de connaissance avec ces bibliothèque, il est évident que this implémente IDTSEvents. (SSIS est un alias au namespace Microsoft.SqlServer.Dts.Runtime).
Sur la méthode OnProgress de l'interface IDTSEvents (et donc de this), j'ai écris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public void OnProgress(SSIS.TaskHost taskHost, string progressDescription, int percentComplete, int progressCountLow, int progressCountHigh, string subComponent, ref bool fireAgain) { txt_Log.Text += progressDescription + "\n"; txt_Log.Refresh(); txt_Log.BackColor = Color.Yellow; }
A prioris le package tourne sauf que je ne logge rien du tout et en debug je constate que je ne rentre pas dans la méthode OnProgress.
J'ai donc ensuite fait passer l'interface non pas avec la méthode LoadFromSqlServer mais Execute en mettant null à tous les autres paramètres (SSIS.Connections, SSIS.Variables,...)
Et là en debug je rentre bien dans la méthode OnProgress.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 pkg = app.LoadFromSqlServer(@"\\MonPackage", "monserveur",null,null,null); pkgResults = pkg.Execute(null,null,this,null,null);
Mais j'ai une erreur à l'execution comme si mon package n'arrivait pas à se connecter à la BDD (je pense que cela vient de l'assignation null à SSIS.Connections mais je ne sais pas quoi mettre).
Quelqu'un a t il une idée ?
Partager