SQLite 在Windows Server 2008 R2 部署问题FAQ汇总[轉]
轉自:http://www.steveluo.name/sqlite-windows-server-2008-r2-deploy-faq/
今天花了一天的时间研究了一下SQLite,以取代一些轻量级项目中使用的Access数据库。原因一方面是想尝试一下这个收到追捧的轻量级文件数据库,另一方面是想使用对象关系映射(ORM),SQLite的支持比Access更好一些。
先做了Demo,做了简单的select操作,不过根据经验,.Net应用程序在部署时总会遇到这个那个的问题,果然部署到服务器上时,出现了一系列的问题。至于SQLite如何使用,不在本文的讨论范围内。
我们本次讨论的是在本机开发和调试全部完成后,部署到服务器上(Windows Server 2008 R2)时的时候出现的问题。
SQLite应用的部署步骤和普通应用是一样的(本应该是如此,否则如何轻便呢?),但可能会遇到一系列的问题,以下问题都是我在部署时亲身经历的问题,测试用服务器是一台全新部署的Windows Server 2008 R2。
1、命名空间“System.Data”中不存在类型或命名空间名称“SQLite”(是否缺少程序集引用?)
请检查是否把System.Data.SQLite.dll放到了bin目录下。本机因为添加了SQLite安装目录下的dll引用因此可以正常调试。> SQLite.NET下载页面
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 (x64)(当然如果你不是64位系统请安装for x86)。
4、Attempt to write a read-only database
请检查数据库所在目录的权限,加入IIS_IUSRS组的完全控制权限(理论上写入即可)。网上查到说添加Users组,事实上正确的做法是添加IIS_IUSRS组,这个才是IIS工作进程所使用的组,应该与Users是子集的关系,所以使用IIS_IUSRS肯定会更安全一些。
5、未能加载文件或程序集“System.Data.SQLite”或它的某一个依赖项。试图加载格式不正确的程序。
这个问题长的和第3个问题很像,只是离胜利更进一步了。产生这个问题的原因是使用了错误版本的System.Data.SQLite.dll,即在x64的服务器上使用了x86的dll(反之亦然),这个问题倒是有2个解决方法。第一个也是我所推荐的,使用正确版本的dll;第二个方法是在IIS应用程序池的高级设置中,“启用32位应用程序”一项设置为True。可能你再这么做之后,又回到了第三个问题,别担心,x86 Visual C++ Runtime装上了就好了。
注意:如果选择了启用32位应用程序,那么就只能使用32位的dll,一个应用程序池中是不能32位和64位混用的。
6、没有报任何错,但是访问SQLite的速度很慢,哪怕是简单的Select操作。
测试数据是只有2个字段,10条数据的SQLite3数据库。很明显这不是应有的表现,经过一系列的测试和排查,发现该问题是由于目录权限造成的。当你只进行查询之类的只读操作时,是不会报错的。解决方法参照以上第4条即可。
至于产生的原因,看到网上说SQLite在操作时是需要创建临时文件的,可能是权限受限后出现了些许问题了吧。
以上6个问题是我部署时遇到的问题,一步步循序渐进,最终赢得了胜利。更加深入的问题后续遇到了继续补充吧。相信很多人都会遇到相同的问题,也相信这篇文章能够解决大部分人的问题。
我也是新人,我的职业也不是程序员,如有不足指出,希望高人指教,谢谢。
SQLite 在Windows Server 2008 R2 部署问题FAQ汇总[轉]的更多相关文章
- Windows Server 2008 R2 部署服务
Windows Server 2008 R2 部署服务 部分参考: Windows Server 2008 R2 部署服务 - 马睿的技术博客 - 51CTO技术博客http://marui.blog ...
- windows server 2008 R2 部署NFS,实现多台服务器间、客户端间的共享目录。
如何通过Windows Server 2008 R2建立NFS存储服务? 通过Windows Server 2008 R2,我们可以很容易地将其作为一台NFS存储服务器,得到一个NFS软存储,轻松解决 ...
- [备忘]Windows Server 2008 R2部署FTP FileZilla Server防火墙设置
有一台服务器,之前文件迁移少,现准备用FileZilla Server当FTP服务器,服务器系统是Windows Server 2008 R2,同样适用FileZilla Client连接服务器FTP ...
- Windows Server 2008 R2 IIS7.5 部署 MVC HTTP 404.0 Not Found 错误
如图 在Windows Server 2008 R2 IIS7.5 部署 MVC HTTP 404.0 Not Found 错误,在Win7环境下测试正常,在百度中查找相关解决方法,如修改配置文件等, ...
- windows server 2008 R2 Enterprise 间实时同步之FreeFileSync 部署过程
WindowsServer间实时同步之FreeFileSync 部署过程 1. 实验主机信息 IP 操作系统 源目录 目标目录 10.155.0.80 Windows Server 2008 R2 D ...
- Windows Server 2008 R2之一活动目录服务部署
测试环境: 服务器:计算机名Win2008R2CNDC,已安装Windows Server 2008 R2.IPV4:192.168.1.13,255.255.255.0,网关地址192.168.1. ...
- windows server 2008 R2域中的DC部署 分类: AD域 Windows服务 2015-06-06 21:09 68人阅读 评论(0) 收藏
整个晚上脑子都有点呆滞,想起申请注册好的博客还从来都不曾打理,上来添添生机.从哪里讲起呢,去年有那么一段时间整个人就陷在域里拔不出来,于是整理了一些文档,害怕自己糊里糊涂的脑子将这些东西会在一觉醒来全 ...
- Windows Server 2008 R2 + IIS 环境部署Asp.Net Core App
Windows + IIS 环境部署Asp.Net Core App 环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署A ...
- Windows Server 2008 R2 域控制器部署指南
一.域控制器安装步骤: 1.装 Windows Server 2008 R2并配置计算机名称和IP地址(见 附录一) 2.点击“开始”,在“搜索程序和文件”中输入Dcpromo.exe后按回车键: 3 ...
随机推荐
- 开发设计模式(八)抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式主要有以下角色: 抽象工厂角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的.通常使用接口或抽象类实现. 具体工厂角色:这个角色直接在客户端的调用下创建产品的实 ...
- ee_15_mvc_db_page----demo---bai
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- windows store app 拷贝文件到pc目录
(function () { "use strict"; WinJS.Binding.optimizeBindingReferences = true; var app = Win ...
- DOS系统里,分屏显示目录的命令是什么??
dir /sdir /pdir /w 我记得这三个都是我当年常用的命令,有分瓶的,有滚动时候每页停顿的,还有去掉详细信息的吧,, 可以放在一起使用.如dir /p/w /p是滚动时候中间停顿的,/w是 ...
- hdu 3303 Harmony Forever (线段树 + 抽屉原理)
http://acm.hdu.edu.cn/showproblem.php?pid=3303 Harmony Forever Time Limit: 20000/10000 MS (Java/Othe ...
- Python属性、方法和类管理系列之----__slots__属性
一句话说明 __slots__是用来限制实例的属性的,__slots__可以规定实例是否应该有__dict__属性:__slots__不能限制类的属性. 只有__slots__列表内的这些变量名可赋值 ...
- UI/UE对个性化推荐的影响
用户界面,用户体验. 在创建网站选择色调时,大多数企业想到的是美观.其实,颜色所起到的作用远超出人们的想象. 关于颜色与购买习惯的心理学书籍比比皆是,下 ...
- Jmeter 使用笔记之 html 报告扩展(一)
题记:在用 loadrunner 的时候可以生成一个 HTML 的报告,并且里面包含各种图表,各种详细的数据.而在使用 Jmeter 测试完后并不能直接生成 Html 的报告(无论是用 GUI 还是命 ...
- 如何使用 Xcode Targets 管理开发和生产版本?
在开始此教程之前,我们假设你已经完成了应用程序的开发和测试,现在准备提交生产发布.问题是,某些 Web 服务 URLs 指向测试服务器,而 API keys 则为测试环境而配置.在提交应用程序给苹果审 ...
- [状压dp]HDOJ4539 郑厂长系列故事——排兵布阵
中文题,题意不再赘述 对于“?”这一格,它所能攻击到的(曼哈顿距离为2的) 前方的 即“√”的四个位置 那么与此格有关的即它前方两行(即状压这两行) 首先预处理每行能满足的: i 和(i<< ...