2009-07-16 8 views
1

До сих пор в разработке мое приложение хранило свои базы данных в каталоге приложения. Когда он будет развернут, это будет в программных файлах, поэтому я не могу их оставить!Где я могу сохранить файлы базы данных?

В obvoius места:

Environment.SpecialFolder.LocalApplicationData 
Environment.SpecialFolder.ApplicationData 

Одна проблема заключается в том, что загрузка данных может быть запущена из sceduled задач, так что я должен был бы обеспечить задачи выполнялись под тем же пользователем.

Основная проблема заключается в том, что через пару лет эти файлы базы данных могут составлять от 5 до 10 ГБ, поэтому я чувствую, что после установки я должен предоставить пользователю возможность выбрать местоположение базы данных. Я должен убедиться, что он доступен для записи, а не для сетевого расположения.

Какие решения есть у других?

ответ

0

О проверке права на запись в каталог: до сих пор я не нашел лучшего способа, чем создать файл в каталоге и немедленно удалить его. Если во время этих шагов возникла ошибка, у вас недостаточно привилегий. (Не забудьте сначала проверить, достаточно ли свободного места на диске).

Я однажды пытался решить эту проблему программно, пройдя через списки контроля доступа, но затем я обнаружил каталог, где я имел priviliges писать, но не вправе перечислять списки управления доступом ...

Вы можете проверить, если данный диск является общим сетевым ресурсом, используя свойство DriveType объекта System.IO.DriveInfo. Что касается обработки UNC-патчей, мне еще предстоит найти лучший способ, чем (myPath.Substring(0,2) == @"\\")

Смежные вопросы