2009-11-25 5 views
0

J'ai un problème avec la création d'un cube OLAP hors ligne de C# en utilisant le code suivant:Comment créer un cube OLAP hors ligne en C#?

using (var connection = new OleDbConnection()) 
    { 
     connection.ConnectionString = "Provider=MSOLAP; Initial Catalog=[OCWCube]; Data Source=C:\\temp\\test.cub; CreateCube=CREATE CUBE [OCWCube] ( DIMENSION [NAME], LEVEL [Wszystkie] TYPE ALL, LEVEL [NAME], MEASURE [Liczba DESCRIPTIO] FUNCTION COUNT ); InsertInto=INSERT INTO OCWCube([Liczba DESCRIPTIO], [NAME].[NAME]) OPTIONS ATTEMPT_ANALYSIS SELECT Planners.DESCRIPTIO, Planners.NAME FROM Planners Planners; Source_DSN=\"CollatingSequence=ASCII;DefaultDir=c:\\temp;Deleted=1;Driver={Microsoft dBase Driver (*.dbf)};DriverId=277;FIL=dBase IV;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=600;SafeTransactions=0;Statistics=0;Threads=3;UserCommitSync=Yes;\";Mode=Write;UseExistingFile=True"; 
     try 
     { 
      connection.Open(); 
     } 
     catch (OleDbException e) 
     { 
      Console.WriteLine(e); 
     } 
    } 

Je continue à faire l'exception suivante:.

« opération en plusieurs étapes a généré des erreurs Vérifier l'état de chaque base de données OLE valeur Aucune action n'a été prise. "

J'ai pris la chaîne de connexion littéralement à partir du fichier OQY généré par Excel. J'ai dû ajouter la section "Mode = Ecrire", sinon je recevais une autre exception ("le fichier peut être utilisé").

Quel est le problème avec la chaîne de connexion? Comment diagnostiquer l'erreur? Quelqu'un s'il vous plaît me guider ...

+0

S'il vous plaît formater votre code. –

+0

Un conseil sur le style: il est possible de diviser de très longues lignes telles que cette chaîne de connexion de 580 caractères sur plusieurs lignes. Cela aide tellement à la lisibilité et à l'édition! – mjv

Répondre

0

Cette fois, Microsoft Support a trouvé une solution de travail pour moi! Il est très simple - la dernière partie de la chaîne de connexion devrait ressembler à ceci:

"Source_DSN = dbfodbc32; Mode = ReadWrite; UseExistingFile = False"

La partie la plus critique est "Mode = ReadWrite ; UseExistingFile = False ".

Après cette modification, le cube a été créé correctement. J'espère que cela t'aides.

Questions connexes