1. iis应用程序池的标识设置为"ApplicationPoolIdentify"(比较安全)
2. 不要将数据库物理文件保存在网站的物理路径内,因为iis应用程序池的标识为ApplicationPoolIdentify,此时网站文件夹的安全权限中对应的用户(应用程序池名称)的权限会被设置为只允许读取,为了安全起见,保持此默认设置,在其它位置创建文件夹用于保存数据库(比如:D:LocalDBTestWebApp)
3. 右键单击保存数据库文件的文件夹(比如:TestWebApp)----属性----安全----编辑----添加----输入名称:IIS APPPOOl应用程序池名称----确定----(此时在用户名列表中将只显示应用程序池名称作为用户名)----勾选允许权限,"修改","读取和执行","列出文件夹内容","读取","写入"----确定----确定----(完成对数据库文件夹的权限设置)
4. 为自动实例v11.0创建共享实例名,并设置相应的权限,步骤如下(以LocalDB 2012 为例)
4.1 打开cmd,按顺序分别执行以下三条命令创建并启用共享实例 (SqlLocalDB.exe 一般在"C:Program FilesMicrosoft SQL Server110ToolsBinn"目录内)
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 AUTHORITYSYSTEM
5. 修改项目中Web.config中的连接字符串,
将 "Data Source" 设置为 "(LocalDb).shareInstanceName",
将 "AttachDbFilename" 设置为 "D:LocalDBTestWebAppTestWebApp.mdf"
注意:localdb实例在一段时间后会自动停止运行,当有连接时会自动运行,不过由于iis应用程序池的标识一般设置为ApplicationPoolIdentify,由于权限不足会导致无法运行localdb实例。