IIS部署应用程序连接 LocalDB 数据库
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
使用.net core框架创建ASP.NET Core API应用程序利用Entity Framework core实体进行MS LocalDB数据库进行连接操作增/删/改/查运行。
问题
在Visual Studio 2022 开发工具可以正常运行 Web API 应用程序连接 LocalDB 数据库进行相关操作但部署到IIS服务器里就出现Login failed for user 'IIS APPPOOL\sqdy'. 错误提示如下
解决方案
IIS配置的应用程序池标识的内置账户ApplicationPoolIdentity没有数据库LocaDB访问管理权限需要为其在数据库创建登录用户和授权如下SQL
--创建 [IIS APPPOOL\sqdy]登录用户
CREATE USER [IIS APPPOOL\sqdy]
FOR LOGIN [IIS APPPOOL\sqdy]
WITH DEFAULT_SCHEMA = dbo;
Go
--为[IIS APPPOOL\sqdy]用户添加'db_owner'角色
EXEC sp_addrolemember 'db_owner', 'IIS APPPOOL\sqdy';
GO
若出现“Local Database Runtime error occurred. 无法获取本地应用程序数据路径。很可能是因为未加载用户配置文件。如果在 IIS 下执行 LocalDB请确保为当前用户启用配置文件加载。”错误提示则将IIS>>应用程序池>>高级设置>>加载用户配置文件 设定为“True”。
可通过以下命令来操作SQLLocalDB数据库
sqllocaldb.exe [versions | v ]查看当前安装LocalDB数据库版本
sqllocaldb.exe [info | i ]查询当前所有数据库实例
sqllocaldb.exe [create | c ] "[实例名]" 创建新实例
sqllocaldb.exe [delete | d ] "[实例名]"删除实例
sqllocaldb.exe [start | s ] "[实例名]" 启动实例
sqllocaldb.exe [stop | p ] "[实例名]" 停止实例
sqllocaldb.exe [help | -? ] 显示 sqllocaldb.exe 命令的帮助信息
sqllocaldb.exe [share | h] "[实例名]" "[共享私有实例名]" 共享实例使用指定的共享名称共享指定的 LocalDB 私有实例
sqllocaldb.exe [unshare | u] "[共享私有实例名]" 取消共享实例停止共享指定的 LocalDB共享实例
-----------------------------------------------------------------------------------
创建LocalDB示例
-- 创建实例
sqllocaldb.exe create "LocalDB_TT"
-- 共享实例
sqllocaldb.exe share "LocalDB_TT" \"LocalDB_TT_Share"
-- 启动实例
sqllocaldb.exe start LocalDB_TT
-- 停止实例
sqllocaldb.exe stop LocalDB_TT
-- 取消共享实例
sqllocaldb.exe unshare LocalDB_TT_Share
提供给IIS服务器访问建议使用LocalDB共享数据。
共享实例连接字符串
Data Source=(LocalDb)\\.\\LocalDB_TT_Share;AttachDbFilename=C:\\Users\\zhidong\\AppData\\Local\\Microsoft\\Microsoft SQL Server Local DB\\Instances\\LocalDB_TT\\TT.mdf;Integrated Security=true;Trusted_Connection=True;MultipleActiveResultSets=true
注若要连接到某一 LocalDB 共享实例请将 \.\反斜杠 + 句点 + 反斜杠添加到连接字符串以便引用为共享实例保留的命名空间。
LocalDb 数据库连接字符串
Data Source=(LocalDb)\\LocalDB_TT;AttachDbFilename=C:\\Users\\zhidong\\AppData\\Local\\Microsoft\\Microsoft SQL Server Local DB\\Instances\\LocalDB_TT\\TT.mdf;Integrated Security=true;Trusted_Connection=True;MultipleActiveResultSets=true