none
Connexions multiples ADOMD.NET 10.0 RRS feed

  • Question

  • Bonjour,

     

    Je développe une application .NET (C#) et je rencontre les écarts de comportements entre les versions 9.0 et 10.0 de ADOMD.NET.

    En version 10.0, si j'ouvre plusieurs connexions AdomdConnection, et que j'en ferme quelques unes mais pas toutes, l'ouverture d'autres connexions va échouer.

    Mais si je ferme toutes les connexions ouvertes ou si je n'en ferme aucune, les ouvertures de connexions suivantes aboutiront avec succès.

    Le problème ne se produit pas avec la version 9.0 de ADOMD.NET.

     

    Voici mon programme de test (avec une référence à la DLL Microsoft.AnalysisServices.AdomdClient 10.0):

     

    class Program
    {
      static void Main()
      {
        string startupPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\\";
    
        for (int i = 0; i < 5; i++)
        {
          Microsoft.AnalysisServices.AdomdClient.AdomdConnection connection = null;
          System.IO.FileInfo fileInfo = new System.IO.FileInfo(string.Format("{0}cube{1}.cub", startupPath, i));
          try
          {
            connection = new Microsoft.AnalysisServices.AdomdClient.AdomdConnection(string.Format("Provider=MSOLAP;Data Source={0}", fileInfo.FullName));
            connection.Open();
            System.Console.WriteLine("Fichier {0} : connexion réussie", fileInfo.Name);
          }
          catch (System.Exception e)
          {
            System.Console.WriteLine("Fichier {0} : {1}", fileInfo.Name, e.Message);
          }
          finally
          {
            if (connection != null && i > 1) connection.Close();
          }
        }
    
        System.Console.ReadLine();
      }
    }
    
    

    En exécutant ce programme, j'obtiens la sortie suivante :

    Fichier cube0.cub : connexion réussie
    Fichier cube1.cub : connexion réussie
    Fichier cube2.cub : connexion réussie
    Fichier cube3.cub : Impossible d'établir une connexion. Vérifiez que le serveur fonctionne.
    Fichier cube4.cub : Impossible d'établir une connexion. Vérifiez que le serveur fonctionne.
    

    Dans ce programme, j'ouvre successivement 5 connexions (de 0 à 4). Les connexions 0 et 1 ne sont pas fermées, mais je ferme la connexion 2. De fait, les connexions 3 et 4 vont échouer.

    Mais dans le finally, si je supprime la condition i > 1 (toutes les connexions sont fermées) ou si je supprime le connection.Close() (toutes les connexions restent ouvertes), il n'y a aucun problème :

    Fichier cube0.cub : connexion réussie
    Fichier cube1.cub : connexion réussie
    Fichier cube2.cub : connexion réussie
    Fichier cube3.cub : connexion réussie
    Fichier cube4.cub : connexion réussie
    

     

    La même expérience avec la version 9.0 de la DLL Microsoft.AnalysisServices.AdomdClient ne génère aucune erreur.

     

    J'espère que mes explications sont claires.

    Je souhaite savoir si ce comportement est normal ("nouveauté" de la version 10.0), ou s'il s'agit d'un bug de la version 10.0, ou si j'utilise mal les fonctionnalités d'ADOMD.NET 10.0.

     

    Merci de votre aide.

    Nicopika

     

    mardi 2 novembre 2010 11:22

Toutes les réponses