2010-09-05 14 views
15

he desarrollado una aplicación (100% locales, no tienen acceso a los servidores) usando SQL Server Compact 3.5, y funciona bien en mi equipo. Sin embargo, cuando lo implementé en otra computadora, muestra este error:SQL Compact Edition 3.5 - El acceso a la base de datos de archivo no está permitido

Access to the database file is not allowed. [ File name = data\BDApepucCE.sdf ] 

Implementé en una computadora con Windows XP. Muestra este error cada vez que intento escribir en la base de datos, sin embargo, funciona cuando leo.

Hice una prueba en una computadora con Windows 7, y funcionó al 100%, excepto cuando se accedió al archivo a través del grupo en el hogar (es decir, red local), en el que falló en lectura/escritura.

Plataforma: Windows 7, Visual Studio 2010, y .NET 4 Client Profile

+0

¿Alguna vez averiguar este problema? Estoy teniendo el mismo problema – wangburger

+0

Lo hice, aunque no recuerdo la solución ahora.Es posible que pueda encontrar la solución cuando llegue a casa, si aún la quiere. –

+0

Lamentablemente, han pasado 2 días y no recuerdo qué hice para solucionarlo. Sin embargo, lo solucioné. Gracias – wangburger

Respuesta

19

Asegúrese de utilizar |DataDirectory| en su cadena de conexión. Aquí es un ejemplo

connectionString="Data Source=|DataDirectory|MyDB.sdf" 

que tenía exactamente el mismo problema que ay y me las arreglé para solucionarlo añadiendo el | DataDirectory | a mi cadena de conexión.

Buena suerte.

+0

recibí un el valor de error no cae dentro del rango esperado ...! – user384080

+0

Solo por cuestión de claridad, tu respuesta funcionó para mí, pero solo con | DataDirectory | precediendo el nombre del archivo, sin incluir ningún asterisco. –

4

Aquí hay otras dos sugerencias:

  • intenta ejecutar Visual Studio como administrador
  • Comprobar si el atributo 'sólo lectura' se establece en el archivo sdf
+0

¿Existe alguna técnica para evitar la configuración de 'solo lectura'? Encontré esta publicación en MSDN, pero apunta a un vínculo inactivo: http://social.msdn.microsoft.com/Forums/en-US/sqlsecurity/thread/d72a020e-bd5e-4f1f-99e3-b77337560021 – jp2code

10

Esto funcionó para mí: http://solutionevangelist.com/community/discussion/20/access-to-the-database-file-is-not-allowed.-system.data.sqlserverce.sqlceexception/p1

It it usually a permissions issue. I give "Everyone" full permissions to the .sdf file in App_Data, either via the GUI, or using

icacls database.sdf /grant Everyone:F 
+1

Esto funcionó para mí. Modifiqué la ACL/permisos de Windows en el directorio App_Data. Dio permisos a usuarios autenticados. –

+0

Funcionou pra mim também dei acesso ao arquivo e voila. –

9

También tuve el mismo problema. Mi solución estaba en TFS/SourceControl en el momento en que la implementé y el archivo sdf se registró (es decir, solo lectura) y esto me causó exactamente el mismo error que el anterior. Cuando revisé el archivo sdf y lo implementé nuevamente, todo estuvo bien. Pensé que lo compartiría en caso de que otros usuarios de TFS experimenten el mismo problema.

+0

Bueno, pero necesitamos un código para automatizar la eliminación del atributo de archivo "readonly" una vez que se construye el proyecto CAB (quizás usando Post Build) – FindOutIslamNow

0

También es posible que desee comprobar y ver si su grupo de aplicaciones está utilizando servicio de red (no del grupo de aplicaciones) y los permisos del servicio de red se establecen para el control total en su carpeta de datos de programa. Este fue mi problema hace un tiempo y olvidé cómo lo hice, pero esta pregunta me recordó cómo lo hice.

0

sólo tiene que hacer 'lado del servidor incluye" permitido bajo el menú de IIS 'Web Services Extensions'

que fija todos mis problemas

0

La siguiente solución que funcionó para mí:.

"Program Files" in Windows is protected, so normal users cannot write there, your applications will probably work only with an administrator user.

Change the data folder path for your database to somewhere where all users have permission to write.

-1

Simplemente ejecute su aplicación como administrador. Resolví mi problema al usar esto.

+0

Muchas gracias, esto resuelve el error cuando intento crear un nuevo SQL CE 4 base de datos en LINQPad4. – sevenkul

0

Esta no sería la causa típica, pero me encontré con este error edad cuando mi cadena de conexión tenía la ruta incorrecta al archivo CE SDF. Una vez que lo arreglé, el error desapareció.

Cuestiones relacionadas