首页 > 解决方案 > .NET Core Entity Framework 让用户运行存储过程

问题描述

我有一个在 Windows 身份验证下运行的 ASP.NET Core Web API。我有使用连接字符串语法处理我的数据库的实体框架:

"data source=dbserver;initial catalog=IntranetDB;persist security info=True;Integrated Security=SSPI;"

我的 Web API 在特定的应用程序池和服务帐户下运行:sa_db.

sa_db是数据库的所有者并已bulk load启用。

API 中的一个过程是将.csv文件保存到网络共享,然后调用 SP 打开该文件并对其进行处理。

问题

在进行了一些更改(例如将以下内容添加到 SP)之后,我们遇到了一些有关权限(访问被拒绝)的问题:

WITH EXECUTE AS OWNER

我们得到了例外:

System.Data.SqlClient.SqlException (0x80131904): You do not have permission to use the bulk load statement.

但是sa_db启用了这个。

当我们使用 API 将 AD 用户的安全组添加到bulk load启用的 SQL 数据库时,一切正常。

查看 SQL 的活动监视器,我只看到该sa_db帐户。

为什么 SP 在 AD 用户下使用 API 而不是服务帐户运行?

标签: sql-serverasp.net-corestored-proceduresentity-framework-core

解决方案


推荐阅读