iis上部署本地数据库LocalDB的方法

1. iis应用程序池的标识设置为"ApplicationPoolIdentify"(比较安全)

2. 不要将数据库物理文件保存在网站的物理路径内,因为iis应用程序池的标识为ApplicationPoolIdentify,此时网站文件夹的安全权限中对应的用户(应用程序池名称)的权限会被设置为只允许读取,为了安全起见,保持此默认设置,在其它位置创建文件夹用于保存数据库(比如:D:\LocalDB\TestWebApp)

3. 右键单击保存数据库文件的文件夹(比如:TestWebApp)----属性----安全----编辑----添加----输入名称:IIS APPPOOl\应用程序池名称----确定----(此时在用户名列表中将只显示应用程序池名称作为用户名)----勾选允许权限,"修改","读取和执行","列出文件夹内容","读取","写入"----确定----确定----(完成对数据库文件夹的权限设置)

4. 为自动实例v11.0创建共享实例名,并设置相应的权限,步骤如下(以LocalDB 2012 为例)

4.1 打开cmd,按顺序分别执行以下三条命令创建并启用共享实例 (SqlLocalDB.exe 一般在"C:\Program Files\Microsoft SQL Server\110\Tools\Binn"目录内)

SqlLocalDB.exe stop "v11.0"
SqlLocalDB.exe share
"v11.0" "shareInstanceName" SqlLocalDB.exe start "InstanceName"

4.2 打开 SQL Server Managerment Studio 使用 Windows身份验证 连接 (LocalDb)\.\shareInstanceName (注意共享实例的数据源名称格式比普通实例中间多了个点)

4.3 选择"安全性"----"登录名"----右键------"新建登录名",在"常规"选项卡中的使用 IIS APPPOOl\应用程序池名称 作为登录名,选择 "Windows身份验证",在"服务器角色"选项卡中勾选"public"和"dbcreator",然后以相同的方法再新建一个登录名:NT AUTHORITY\SYSTEM

5. 修改项目中Web.config中的连接字符串,

    将 "Data Source" 设置为 "(LocalDb)\.\shareInstanceName",

    将 "AttachDbFilename" 设置为 "D:\LocalDB\TestWebApp\TestWebApp.mdf"

 

注意:localdb实例在一段时间后会自动停止运行,当有连接时会自动运行,不过由于iis应用程序池的标识一般设置为ApplicationPoolIdentify,由于权限不足会导致无法运行localdb实例。

posted on 2017-07-23 14:35  四芯线  阅读(548)  评论(0编辑  收藏  举报