设为首页 收藏本站
查看: 995|回复: 0

[经验分享] SQLite 在Windows Server 2008 部署问题FAQ汇总

[复制链接]

尚未签到

发表于 2015-4-30 13:15:02 | 显示全部楼层 |阅读模式
  今天花了一天的时间研究了一下SQLite,方便轻量级项目中使用轻量级数据库。
  先做了Demo,做了简单的select操作,不过根据经验,.Net应用程序在部署时总会遇到这个那个的问题,果然部署到服务器上时,出现了一系列的问题。至于SQLite如何使用,不在本文的讨论范围内。
  我们本次讨论的是在本机开发和调试全部完成后,部署到服务器上(Windows Server 2008)时的时候出现的问题。
  SQLite应用的部署步骤和普通应用是一样的,但可能会遇到一系列的问题,以下问题都是我在部署时遇到的问题和网上收集的其他用户出现的问题,测试用服务器是一台全新部署的Windows Server 2008 。
  
  1、命名空间“System.Data”中不存在类型或命名空间名称“SQLite”(是否缺少程序集引用?)
  请检查是否把System.Data.SQLite.dll放到了bin目录下。
  2、未能加载文件或程序集“System.Data.SQLite.Linq”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。
  以上问题是由于服务器未安装.Net Framework 4.0(或许应用程序池选择了低版本也会出现,未经测试) ,而.Net Framework版本也是比较重要的细节,可以发现在下载SQLite.NET时候,分的比较严格,for .Net Framework 3.5SP1和4.0是分开的,因此必须选用和目标框架版本一致的版本。安装完.Net 4.0后,记得切换IIS中应用程序池的版本。
  3、未能加载文件或程序集“System.Data.SQLite.dll”或它的某一个依赖项。找不到指定的模块。
  该问题出现的原因是没有安装Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)。
  4、Attempt to write a read-only database
  请检查数据库所在目录的权限,加入IIS_IUSRS组的完全控制权限(理论上写入即可)。网上查到说添加Users组,事实上正确的做法是添加IIS_IUSRS组,这个才是IIS工作进程所使用的组,应该与Users是子集的关系,所以使用IIS_IUSRS肯定会更安全一些。
  5、未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。
  产生这个问题的原因是使用了错误版本的System.Data.SQLite.dll,即在x64的服务器上使用了x86的dll(反之亦然),这个问题倒是有2个解决方法。第一个也是我所推荐的,使用正确版本的dll;第二个方法是在IIS应用程序池的高级设置中,“启用32位应用程序”一项设置为True。可能你再这么做之后,又回到了第三个问题,别担心,x86 Visual C++ Runtime装上了就好了。
  注意:如果选择了启用32位应用程序,那么就只能使用32位的dll,一个应用程序池中是不能32位和64位混用的。
  我更换了sqlite3.dll 即正常了。
  6、没有报任何错,但是访问SQLite的速度很慢,哪怕是简单的Select操作。
  测试数据是只有2个字段,10条数据的SQLite3数据库。很明显这不是应有的表现,经过一系列的测试和排查,发现该问题是由于目录权限造成的。当你只进行查询之类的只读操作时,是不会报错的。解决方法参照以上第4条即可。 至于产生的原因,看到网上说SQLite在操作时是需要创建临时文件的,可能是权限受限后出现了些许问题了吧。
  第4个问题是我部署时遇到的问题,其他的为解决问题中查找到的其他人出现的问题的整理。一步步循序渐进,最终赢得了胜利。更加深入的问题后续遇到了继续补充吧。相信很多人都会遇到相同的问题,也相信这篇文章能够解决大部分人的问题。
  我也是新人,如有不足指出,希望高人指教,谢谢。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-62308-1-1.html 上篇帖子: 命令行shell 用于SQLite 下篇帖子: Windows Phone(二) WP7数据库连接(SQLite数据库)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表