2010-03-11 11 views
5

He intentado ejecutar la aplicación en dos situaciones: con la edición compacta de SQL Server (3.5) instalada y otra sin ella. Cuando SQL Server Compact Edition no está instalado, me sale el siguiente error:Intenté leer o escribir memoria protegida-Sql Compact y .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 
---------------------------------------------------------- 

Estoy manejo de excepciones no controladas usando this method.

Recibo este error desde una aplicación de consola que estoy comenzando desde Windows Form. Tanto en la aplicación he insertado la codificación de Excepción no controlada y se está ejecutando y volviendo al archivo de texto, y se está generando el cuadro de diálogo "error de informe" de Microsoft; ¿Cómo evito que eso suceda? ¿Cómo soluciono el problema de qué está causando este problema?

Respuesta

-1

¡Resolvió ese error! No era realmente un error SqlCompact o una excepción del código. Era GAC ​​el que estaba lanzando it bec Estaba abriendo otra aplicación para algún propósito y esa aplicación estaba accediendo a la Base de datos. En el momento en que esa aplicación cerraba el DB, se eliminaba explícitamente de la aplicación principal por lo que el error venía para SQL COMPACT. entonces, adelanté algunos cambios en mi código y está funcionando ahora. Gracias por todas sus sugerencias.

+0

¿Qué cambios de código hizo para que funcione? Creo que estoy teniendo el mismo problema porque Visual Studio 2010 es la "otra aplicación" que tiene el DB abierto. – JasonD

+0

¿Puedo saber la razón del voto a la baja? – Jankhana

+6

-1 Simplemente porque esta no es una respuesta. Me alegro de que hayas resuelto tu problema, pero en general esta respuesta no le dice nada a la gente. –

1

El código nativo SQL Compact se está bloqueando. Eso es muy inusual Y muy es poco probable que sea causado por su código. No es el tipo de problema que podrías depurar, no tienes nada más que código de máquina para mirar. Si ejecuta cualquier otro código no administrado en proceso, entonces considere que es responsable de la inestabilidad. Escribir la PC y dispararlo entre los platos del disco es la solución rápida.

+0

u puede simplemente informar sobre wat u quieren decir con "Escritura de la PC y de grabar, entre los platos del disco es la solución rápida." – Jankhana

+1

Medios: "deshacerse de la máquina, obtener otra". –

2

Cuando tuve este problema, el problema era la conexión de base de datos:

Si no cierra la conexión antes de volver a abrirla, se obtiene este error arround "System.Data.SqlServerCe".

Simplemente añadiendo esta línea resuelto mi problema:

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


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

mi propio error era causado por el hecho de que yo estaba usando hilos. Compruebe 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.

Cuestiones relacionadas