我们在web.config
中存储用于构建SQL Server CE连接字符串的模板,并使用string.format
设置数据源和临时路径值。
在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数据库运行的相同代码失败,但出现以下异常:
异常'System.Data.SqlServerCe.SqlCeException',消息'The 数据库以只读连接打开。无法执行 后初始化操作,如重建索引和升级 公共跟踪。请使用读写连接重新打开。 [ 数据库名称= D:\ inetpub \ wwwroot \ MyApp \ App_Data \ Storage.sdf]'
我们正在使用System.Data.SqlServerCe.4.0
提供商
为什么在部署到服务器的发布版本中,只读取一些SQL Server CE数据库的访问失败而不是其他SQL Server CE数据库的访问失败?它是相同的代码,只是指向不同的.SDF
文件。 .SDF
文件具有相同的架构,只有不同的数据。
驱动程序是否尝试重建索引,因为.SDF
文件是某种旧格式?我们是否应该在生产中使用只读连接?这就是为什么原始代码有变换的原因?为什么他们都在我的Windows 7工作站上使用只读连接?
答案 0 :(得分:0)
您应始终指定临时路径,因为在OS平台/版本之间移动数据库可能需要重建索引。
有关详细信息,请参阅我的博客帖子:http://erikej.blogspot.dk/2009/08/running-sql-compact-from-cd-rom-read.html。