IIS部署应用程序连接 LocalDB 数据库

使用.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

猜你喜欢

转载自blog.csdn.net/LZD_jay/article/details/128727261