SQL Compact Edition 3.5 - Access to the database file is not allowed
I developed an application (100% local, no access to servers) using SQL Server Compact 3.5, and it works fine on my computer. However, when I deployed it on another computer, it shows this error:
Access to the database file is not allowed. [ File name = data\BDApepucCE.sdf ]
I deployed on a Windows XP computer. It shows this error whenever I try to write on the database, however, it works when I read.
I did a test on a Windows 7 computer, and it worked 100%, except when the file was accessed through the homegroup (that is, local network), on which it failed on both read/write.
Platform: Windows 7, Visual Studio 2010, and .NET 4 Client Profile
Make sure you use |DataDirectory| in your connection string. Here is an example
I had the exact same problem ay you and I managed to fix it by adding the |DataDirectory| to my connection string.
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
I also had this same problem. My solution was in TFS/SourceControl at the time when I deployed it and the sdf file was checked-in (ie read-only) and this caused me the exact same error as above. When I checked out the sdf file and deployed again, everything was fine. Thought I'd share that in case other TFS users experience the same issue.
Here are a two other suggestions:
- Try to run your Visual Studio as administrator
- Check if the 'readonly' attribute is set on the sdf file
Also you may want to check and see if your Application Pool is using Network Service (not Application Pool) and the Network Service Permissions are set to full control under your AppData folder. This was my problem awhile ago and I forgot how I did it, but this question reminded me of how I did it.
You just need to make 'Server Side Includes" allowed under the IIS menu 'Web Services Extensions'
that fixed all my problems.
The following solution worked for me:
"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.
This would not be the typical cause, but I ran into this error message when my connection string had the incorrect path to the CE SDF file. Once I fixed that the error went away.
Just run your application as administrator. I solved my problem using this.