Bonjour,
J'ai un site Web qui fait appel à des dtsx.
Dans le cas classique, l'utilisateur clique sur un bouton et un dtsx est lancé.
Les dts sont stockés dans un répertoire du serveur (le même que celui qui héberge le site)
Dans certains cas, l'appel des dts peut être très long et du coup je lance l'appel à l'aide de threadpool.QueueUserWorkItem
Sur mon poste, je n'ai aucun problème, l'appel est effectué correctement, que ce soit de manière synchrone ou non
Lorsque je déploie l'application sur le serveur, pour l'exécution des dts de manière synchrone, je n'ai pas d'erreur.
Pour ceux que j'essaie d'exécuter de manière asynchrone, j'ai l'erreur suivante :
Une idée de la provenance du problème?The package failed to load due to error 0xC0011008 "Error loading from XML. No further detailed error information can be specified for this problem because no Events object was passed where detailed error information can be stored.". This occurs when CPackage::LoadFromXML fails
Pour l'appel du DTS, j'utilise le code suivant :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System.Configuration; using Microsoft.SqlServer.Dts.Runtime; using log4net; namespace DTSManager.Common { /// <summary> /// Factory pour les DTS /// </summary> public class DTSFactory :IDTSFactory { static readonly ILog log = LogManager.GetLogger(typeof(DTSFactory)); public Package createPackage(string dtsFileName) { Application dtsApplication = new Application(); string dtsxFilesDirectory = DTSConfiguration.DtsxDirectory; string dtsFilePath = Path.Combine(dtsxFilesDirectory, dtsFileName); log.InfoFormat(dtsFilePath); try { return dtsApplication.LoadPackage(dtsFilePath,null); } catch(Exception exp) { log.Error(exp.Message); throw new Exception(exp.Message); } } } }
Partager