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

使用Entity Framework Core通过Windows身份验证连接数据库失败求助

Windows身份验证连接SQL Server失败问题

错误信息

Microsoft.Data.SqlClient.SqlException: 'Cannot open database "EfCoreBasicDb" requested by the login. The login failed.
Login failed for user 'LIZARD\BLAKD'.'

代码实现

public class Program
{
    public static void Main(string[] args)
    {
        using var dbContext = new ApplicationDbContext();
    
        dbContext.Database.ExecuteSqlRaw("SELECT 1");
    
        Console.WriteLine();
        Console.WriteLine($"Name Provider: {dbContext.Database.ProviderName}.");
        Console.WriteLine();
    }
}

public class ApplicationDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder
            .UseSqlServer(
                @"Server=(localdb)\mssqllocaldb;Database=EfCoreBasicDb;Trusted_Connection=True; TrustServerCertificate=True; Integrated Security=True")

            .EnableDetailedErrors()
            .EnableSensitiveDataLogging()
            .LogTo(
                Console.WriteLine,
                new[] { DbLoggerCategory.Database.Command.Name },
                LogLevel.Information);
    }
}

当前状态

  • 在Microsoft SQL Server Management Studio(SSMS)中使用Windows身份验证登录正常
    • 用户映射配置显示:Windows用户LIZARD\BLAKD已成功映射到EfCoreBasicDb数据库,且配置了对应数据库权限
    • 登录状态显示:该账户状态正常,未被禁用

已尝试的连接字符串选项

以下配置均已测试,但问题未解决:

  • Trusted_Connection=True; TrustServerCertificate=True
  • Integrated Security=SSPI; TrustServerCertificate=True
  • Integrated Security=true; TrustServerCertificate=True

排查建议

  1. 验证LocalDB实例状态
    打开命令提示符,执行 sqllocaldb info 确认mssqllocaldb实例是否运行;若未运行,执行 sqllocaldb start mssqllocaldb 启动实例。

  2. 检查数据库权限细节
    在SSMS中右键EfCoreBasicDb数据库 → 【属性】→ 【权限】,确认LIZARD\BLAKD用户拥有CONNECT权限,以及执行SELECT语句的必要权限(如db_datareader角色)。

  3. 简化连接字符串
    Trusted_Connection=True与Integrated Security=True等效,同时配置可能引发冲突,改用最简有效配置:

    Server=(localdb)\mssqllocaldb;Database=EfCoreBasicDb;Trusted_Connection=True;TrustServerCertificate=True
    
  4. 确认程序运行身份
    若在IDE中运行,检查Visual Studio的运行身份是否为当前Windows用户LIZARD\BLAKD;若为发布后的程序,右键程序 → 【属性】→ 【兼容性】,确认未设置以其他用户身份运行。

  5. 检查LocalDB数据库文件权限
    LocalDB数据库文件默认存于用户目录(C:\Users\[用户名]\),确认EfCoreBasicDb的mdf/ldf文件归属于LIZARD\BLAKD用户,且拥有读写权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:42:22