2016-09-29 2 views
2

Мы храним шаблон для построения строк подключения SQL Server CE в нашем web.config и используем string.format для установки значений источника данных и значений темпа.База данных SqlCeException открывается с подключением только для чтения

В web.config, шаблон для строки подключения БД:

"Data Source={0}; Temp Path={1}; Mode=Read Only" 

В web.release.config мы используем для создания пакетов развертывания, шаблон для строки подключения БД:

Data Source={0}; Temp Path={1} 

Теперь мы используем базу данных SQL Server CE только для операций чтения. Итак, будучи smartypants, я думал, что я удалю преобразование строки подключения в web.release.config и просто всегда использую строку подключения только для чтения от web.config.

Это работало отлично для базы данных, которую я тестировал. Но тот же код, работающий с другой базой данных SQL Server CE не может со следующим исключением:

Exception «System.Data.SqlServerCe.SqlCeException» с сообщением «База данных открыт с подключением только для чтения. Не удается выполнить операции после инициализации, такие как перестроение индексов и обновление общедоступного отслеживания. Повторно откройте соединение для чтения и записи. [ Имени базы данных = D: \ Inetpub \ Wwwroot \ MyApp \ App_Data \ Storage.sdf]

Мы используем System.Data.SqlServerCe.4.0 поставщика

Почему в моих сборках выпуска, развернутые на сервер делает чтение только сбой доступа для некоторых баз данных SQL Server CE, но не для других? Это тот же код, просто указывая на другой файл .SDF. Файлы .SDF имеют одну и ту же схему, только разные данные.

Является ли драйвер, пытающийся перестроить индексы, потому что файл .SDF находится в некотором более старом формате? Должны ли мы никогда не использовать соединение только для чтения в производстве? Именно поэтому исходный код имел преобразование? почему все они работают с подключением только для чтения на моей рабочей станции Windows 7?

ответ

0

Вы всегда должны указывать временный путь, так как перемещение баз данных между платформами/версиями ОС может потребовать перестроек индекса.

Смотрите мой пост в блоге: http://erikej.blogspot.dk/2009/08/running-sql-compact-from-cd-rom-read.html для получения более подробной информации.

+0

Temp Path был указан в обеих конфигурациях. Разница заключается в том, что Mode = Read Only был установлен в одном конфиге, а не в другом. –

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