2010-03-11 8 views
5

J'ai essayé d'exécuter l'application dans deux situations: avec SQL Server compact edition (3.5) installé et un sans. Lorsque SQL Server Compact Edition est pas installé, je reçois l'erreur suivante:Tentative de lecture ou d'écriture de la mémoire protégée-Sql Compact et .NEt

Exception :Attempted to read or write protected memory. This is often an indication 
that other memory is corrupt. 

Inner Exception : 
======================== 

Stack Trace : 
======================== 
    at System.Data.SqlServerCe.NativeMethods.CloseStore(IntPtr pSeStore) 
    at System.Data.SqlServerCe.SqlCeConnection.ReleaseNativeInterfaces() 
    at System.Data.SqlServerCe.SqlCeConnection.Dispose(Boolean disposing) 
    at System.Data.SqlServerCe.SqlCeConnection.Finalize() 
Source : 
======================== 
System.Data.SqlServerCe 
---------------------------------------------------------- 

Je gestion des exceptions non gérées à l'aide this method.

Je reçois cette erreur d'une application de console que je commence à partir d'un Windows Form. Dans l'application, j'ai inséré le codage Exception non gérée et il est en train d'être exécuté et retourné au fichier texte, et la boîte de dialogue d'erreur de rapport de Microsoft est générée; comment puis-je empêcher cela? Comment puis-je résoudre les problèmes à l'origine de ce problème?

Répondre

-1

J'ai résolu cette erreur !!! Ce n'était pas vraiment erreur SqlCompact ou Exception de code.C'était GAC qui était en train de lancer car j'ouvrais une autre application pour un but et cette application accédait à la base de données. Au moment où cette application fermait la base de données, elle était explicitement supprimée de l'application parente, de sorte que l'erreur arrivait pour SQL COMPACT. donc je, ade peu de changements dans mon code et ça marche maintenant !!! Merci pour toutes vos suggestions.

+0

Quels changements de code avez-vous faits pour que cela fonctionne? Je pense que j'ai le même problème en ce que Visual Studio 2010 est "l'autre application" qui a ouvert la base de données. – JasonD

+0

puis-je connaître raison de downvote – Jankhana

+6

-1 Tout simplement parce que ce n'est pas une réponse. Je suis content que vous ayez résolu votre problème, mais dans l'ensemble cette réponse ne dit rien aux gens. –

1

Le code SQL Compact natif se bloque. C'est très inhabituel. Et très peu susceptible d'être causée par votre code. Pas le genre de problème que vous pourriez jamais déboguer, vous n'avez rien d'autre que du code machine à regarder. Si vous exécutez un autre code non géré en cours, considérez qu'il est responsable de l'instabilité. Ecrit le PC et le tir entre les plateaux de disque est la solution rapide.

+0

u peut juste informer sur wat u signifie par « L'écriture de l'ordinateur et la prise de vue entre les plateaux du disque est la solution rapide. » – Jankhana

+1

Moyens: "se débarrasser de la machine, en prendre une autre". –

2

Quand j'ai eu ce problème, le problème était la connexion de base de données:

Si vous ne fermez pas la connexion avant de le rouvrir, vous obtenez cette erreur arround « System.Data.SqlServerCe ».

juste ajouter cette ligne a résolu mon problème:

SqlCeConnection conn = new SqlCeConnection(_connectionString); 
conn.Close(); //adding this. 


if(conn == ConnectionState.Open) { 
//-- Your code here. 
} 
0

Mon erreur a été causé par le fait que je l'aide de fils. Vérifiez this link

The intermittent quality of the exception seems to indicate a threading problem. The sql ce database in this case is being concurrently accessed by multiple threads: one is a write-only thread used by a SqlCeResultSet object and the other(s) are read-only operations generated by LINQ queries.