ThinkGeo.com    |     Documentation    |     Premium Support

Error Microsoft Jet database engine could not find the object

Hi, 



I have a problem when I run a map using thematic layers using the image below, appear an error

 “requested registry access is not allowed”   

“The Microsoft Jet database engine could not find the object ‘JaliscoF-NEM’.  Make sure the object exists and that you spell its name and the path name correctly.”, attach code where appears error in yellow line



this code works fine in my local machine win8.1 and in a server win2008 but I installed new server with win2012 and appear that error the settings are the same for 3 environment (shapes,databases  and source code) but only in the win2012 fails I think this happen for permisions errors



thanks for your help



CapaTematica thematicLayer = (CapaTematica)((ThreadState)state).layer;

if (!allDataSources.ContainsKey(thematicLayer.FuenteDeDatos.Nombre))



    string tabName = Path.GetFileNameWithoutExtension(thematicLayer.FuenteDeDatos.Ruta);

    string column = ((ThreadState)state).layer.FuenteDeDatos.CaracteristicaColumna;

    FeatureSource featsrc = ((ThreadState)state).fs;

    featsrc.Open();

    var allFeatures = featsrc.GetAllFeatures(ReturningColumnsType.AllColumns);

    var lookupFeatures = (Lookup<string, Feature>)allFeatures.ToLookup(x => x.ColumnValues[column].ToString(), y => y);

    DataTable searchDataSource = new DataTable(tabName);

    if (featsrc.CanExecuteSqlQuery)

     {

        searchDataSource = featsrc.ExecuteQuery(string.Format(“select * from {0}”, tabName));

     }

    else

    {

       foreach (var colVal in allFeatures.FirstOrDefault().ColumnValues)

       {

          searchDataSource.Columns.Add(colVal.Key, typeof(string));

        }

       foreach (var feature in allFeatures)

       {

          DataRow dr = searchDataSource.NewRow();

           foreach (var cv in feature.ColumnValues)dr[cv.Key] = cv.Value;

           searchDataSource.Rows.Add(dr);

       }

   }

   ((ThreadState)state).fs.Close();

   allDataSources.Add(thematicLayer.FuenteDeDatos.Nombre, lookupFeatures);

   newAllDataSources.Add(thematicLayer.FuenteDeDatos.Oid, searchDataSource);









Hi Daniel,



I have some insights on this kind of issue. I am guessing this is we are using OleDb Provider as the sql query engine and this provider only supports under 32 bit system. So, I think your win2012 server system might be 32 bit. If that issue is exactly what I am saying, there is a solution by enable the 32 bit in IIS server application.

Right-click on your website application and select the Advanced Setting:



Please let us know what your win2012 environment if the issue persists.

Thanks,

Troy

thanks for your help troy but I don’t think that’s its the problem because in the example I run the project from visual studio and appears that error currently I didt publish the app in IIS





as I told you my scenario:



my lap:   win 8.1 64 bits works fine

server win 2008 64 bits works fine

server win 2012 64 bits appears that error 



in all scenarios I ran app over visual studio source code not publish app 

  

regards

Hi Daniel,



In the executeQuery method, we are using pure OLEDB to do this, based on this, I extract this part codes from this method and build the attached sample without map suite reference, would you please run the sample in your end to see if you can recreate the exception? (you can build the sample on both 32bit and 64 bit).



I also google the issue a bit with the message “request registry access is not allowed”, and I found this link, would you please check it?

 blogs.technet.com/b/spsforum…lowed.aspx



Hope it helps.

Thanks,

Troy

001_JetDatabase.zip (13.2 KB)

in your example works fine but when use long filenames (>8 characters) appears an error





works fine

 Private static string shapeFileFileName = “…/…/…/App_Data/WorldCapitals.shp”;

 private static string sqlStatement = "Select * from [worldc~1] ";



when I change by this sentence appear the error

Private static string shapeFileFileName = “…/…/…/App_Data/WorldCapitals.shp”;

 private static string sqlStatement = "Select * from [WorldCapitals] ";



I don’t know why it occurs only in some machines, once format the same machine and no error appeared I think may be a problem with permission



regards






errors.png (54.2 KB)

Hi Daniel,



I guess I miss the part on how the table name is generated. Actually, we are using an extern method “GetShortPathNameA” in kernel32 to get it. I changed the codes from the test sample I sent for your before. Please get it and have a try to see if the issue is happened on this part.



BTW, does “works fine” mean it works fine in every server machine?
Any questions, please feel free to let us know.
Thanks,
Troy

Program.cs.txt (2.76 KB)