轉自: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汇总[轉]的更多相关文章

  1. Windows Server 2008 R2 部署服务

    Windows Server 2008 R2 部署服务 部分参考: Windows Server 2008 R2 部署服务 - 马睿的技术博客 - 51CTO技术博客http://marui.blog ...

  2. windows server 2008 R2 部署NFS,实现多台服务器间、客户端间的共享目录。

    如何通过Windows Server 2008 R2建立NFS存储服务? 通过Windows Server 2008 R2,我们可以很容易地将其作为一台NFS存储服务器,得到一个NFS软存储,轻松解决 ...

  3. [备忘]Windows Server 2008 R2部署FTP FileZilla Server防火墙设置

    有一台服务器,之前文件迁移少,现准备用FileZilla Server当FTP服务器,服务器系统是Windows Server 2008 R2,同样适用FileZilla Client连接服务器FTP ...

  4. 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环境下测试正常,在百度中查找相关解决方法,如修改配置文件等, ...

  5. windows server 2008 R2 Enterprise 间实时同步之FreeFileSync 部署过程

    WindowsServer间实时同步之FreeFileSync 部署过程 1. 实验主机信息 IP 操作系统 源目录 目标目录 10.155.0.80 Windows Server 2008 R2 D ...

  6. Windows Server 2008 R2之一活动目录服务部署

    测试环境: 服务器:计算机名Win2008R2CNDC,已安装Windows Server 2008 R2.IPV4:192.168.1.13,255.255.255.0,网关地址192.168.1. ...

  7. windows server 2008 R2域中的DC部署 分类: AD域 Windows服务 2015-06-06 21:09 68人阅读 评论(0) 收藏

    整个晚上脑子都有点呆滞,想起申请注册好的博客还从来都不曾打理,上来添添生机.从哪里讲起呢,去年有那么一段时间整个人就陷在域里拔不出来,于是整理了一些文档,害怕自己糊里糊涂的脑子将这些东西会在一觉醒来全 ...

  8. 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 ...

  9. Windows Server 2008 R2 域控制器部署指南

    一.域控制器安装步骤: 1.装 Windows Server 2008 R2并配置计算机名称和IP地址(见 附录一) 2.点击“开始”,在“搜索程序和文件”中输入Dcpromo.exe后按回车键: 3 ...

随机推荐

  1. 转载:PCB名詞解釋:通孔、盲孔、埋孔

    在[電子製造業]打滾多年,分享 SMT.焊錫.塑膠射出.產品設計.瓦楞包裝…等經驗.請注意文章內容不見得都正確,服用前請三思… 之前有網友提醒我有篇文章把PCB的盲孔(Blind hole).埋孔(B ...

  2. delphi xe5 android 控制蓝牙

    本文部分内容摘自: http://www.pclviewer.com/android/用以下代码中的接口实现控制蓝牙的开.关及详细信息 unit Androidapi.JNI.BluetoothAda ...

  3. vs2013运行c语言出现:无法查找或打开 PDB 文件。

    vs2013运行c语言出现:无法查找或打开 PDB 文件.    “ConsoleApplication1.exe”(Win32): 已加载“C:\Users\hp\Documents\Visual ...

  4. python中的reduce

    python中的reduce内建函数是一个二元操作函数,他用来将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 func()(必须是一个二元操作函数)先对集合中的第1 ...

  5. GDB多进程调试(转)

    http://www.cnblogs.com/ggjucheng/archive/2011/12/15/2288710.html GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强 ...

  6. [string]Codeforces158C Cd and pwd commands

    题目链接 题意很清楚 和linux的语句是一样的 pwd输出路径 cd进入 ..回上一层目录 此题完全是string的应用 String的用法 vector<string> s; int ...

  7. VirtualDub - 开源视频捕捉及线性处理软件

    VirtualDub是一个开放源代码的视频捕捉及线性处理软件.它由Avery Lee编写,遵循GPL协议.VirtualDub可以通过摄像头捕捉视频. 官方网站http://virtualdub.or ...

  8. MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类

    MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器 ...

  9. Oracle系列之异常处理

    涉及到表的处理请参看原表结构与数据  Oracle建表插数据等等 使用select into语句读取tb_Employee的一行,使用异常处理处理no_data_found和two_many_rows ...

  10. RHEL/CentOS/Fedora常用的 CentOS 5/6/7 yum 源(EPEL、Remi、RPMForge、RPMFusion, ius,163,sohu,阿里云)配置

    RHEL以及他的衍生发行版如CentOS.Scientific Linux为了稳定,官方的rpm repository提供的rpm包往往是很滞后的,当然了,这样做这是无可厚非的,毕竟这是服务器版本,安 ...