You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何确定Integrated Security运行所用用户身份?解决EF Core权限报错

解决方法:查询当前操作数据库的用户身份

因为你的连接字符串使用Integrated Security=True,意味着是当前运行EF命令/程序的Windows用户在访问数据库。以下是几种直接查询该用户身份的实用方法:

方法1:通过程序临时查询

在你的项目中临时添加一段代码,执行SQL查询获取当前用户信息,运行后即可看到结果:

using (var context = new YourDbContext())
{
    var userResult = context.Database.SqlQuery<(string LoginName, string DbUser)>("SELECT SYSTEM_USER, CURRENT_USER").First();
    Console.WriteLine($"登录用户:{userResult.LoginName}");
    Console.WriteLine($"数据库用户:{userResult.DbUser}");
}

说明:SYSTEM_USER返回SQL Server登录名(Windows用户格式通常为DOMAIN\Username),CURRENT_USER是该登录名映射到MyDb数据库的本地用户账号。

方法2:通过EF Core命令直接执行查询

如果使用.NET CLI,直接在命令行运行:

dotnet ef database execute "SELECT SYSTEM_USER, CURRENT_USER;" --project 你的项目名称

如果使用Visual Studio的Package Manager Console,执行:

Invoke-SqlCmd -ServerInstance "dev-db,1433" -Database "MyDb" -IntegratedSecurity -Query "SELECT SYSTEM_USER, CURRENT_USER;"

方法3:在数据库服务器端查询活跃会话

登录到数据库服务器的SQL Server Management Studio,执行以下查询,找到对应你开发机(host_name为你的开发机名称)的会话,即可看到登录用户:

SELECT 
    login_name AS '登录用户名',
    host_name AS '客户端机器名',
    program_name AS '客户端程序'
FROM sys.dm_exec_sessions
WHERE database_id = DB_ID('MyDb')
AND host_name = '你的开发机名称';

确认用户身份后,在数据库服务器上给该用户授予db_ddladmin角色权限(或更精细的CREATE TABLE权限),即可解决CREATE TABLE permission denied的问题。

内容的提问来源于stack exchange,提问作者NovaDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:41:16