SQL Compact Edition 3.5 - Доступ к файлу базы данных запрещен
Я разработал приложение (100% локальное, без доступа к серверам), используя SQL Server Compact 3.5, и он отлично работает на моем компьютере. Однако, когда я развернул его на другом компьютере, он показывает эту ошибку:
Access to the database file is not allowed. [ File name = data\BDApepucCE.sdf ]
Я развернулся на компьютере под управлением Windows XP. Он показывает эту ошибку, когда я пытаюсь писать в базе данных, однако она работает, когда я читаю.
Я выполнил тест на компьютере под управлением Windows 7, и он работал на 100%, за исключением случаев, когда доступ к файлу осуществлялся через домашнюю группу (то есть локальную сеть), на которой он не работал как при чтении/записи.
Платформа: Windows 7, Visual Studio 2010 и . Профиль клиента NET 4
Ответы
Ответ 1
Убедитесь, что вы используете |DataDirectory|
в строке подключения.
Вот пример
connectionString="Data Source=|DataDirectory|MyDB.sdf"
У меня была такая же проблема, как и вы, и мне удалось исправить ее, добавив | DataDirectory | к моей строке подключения.
Удачи.
Ответ 2
Это сработало для меня: http://solutionevangelist.com/community/discussion/20/access-to-the-database-file-is-not-allowed.-system.data.sqlserverce.sqlceexception/p1
Это обычно проблема с разрешениями. Я предоставляю "Все" полные разрешения на файл .sdf в App_Data, либо через графический интерфейс, либо используя
icacls database.sdf /grant Everyone:F
Ответ 3
У меня также была такая же проблема. Мое решение было в TFS/SourceControl в то время, когда я развернул его, и файл sdf был зарегистрирован (то есть только для чтения), и это вызвало ту же ошибку, что и выше. Когда я проверил файл sdf и развернулся снова, все было в порядке. Думаю, я поделился бы этим, если другие пользователи TFS будут испытывать ту же проблему.
Ответ 4
Вот еще два предложения:
- Попробуйте запустить Visual Studio как администратор
- Проверьте, установлен ли атрибут 'readonly' в файле sdf
Ответ 5
Также вы можете проверить и посмотреть, использует ли ваш пул приложений сетевой сервис (не пул приложений), а разрешения сетевой службы - полный контроль в папке AppData. Это была моя проблема некоторое время назад, и я забыл, как я это сделал, но этот вопрос напомнил мне, как я это сделал.
Ответ 6
Вам просто нужно сделать "Server Side Includes" разрешенным в меню IIS "Расширения веб-сервисов"
который исправил все мои проблемы.
Ответ 7
Для меня работало следующее решение:
"Программные файлы" в Windows защищены, поэтому обычные пользователи не могут писать там ваши приложения, вероятно, будут работать только с администратором пользователь.
Измените путь папки данных для своей базы данных где-нибудь, где все пользователи имеют разрешение на запись.
Ответ 8
Это не будет типичной причиной, но я столкнулся с этим сообщением об ошибке, когда строка подключения имела неправильный путь к файлу SDF CE. Как только я установил, что ошибка исчезла.
Ответ 9
Просто запустите приложение как администратор. Я решил свою проблему, используя это.