【问题标题】:ASP.NET Core: An attempt to attach an auto-named database for file failedASP.NET Core:尝试为文件附加自动命名数据库失败
【发布时间】:2017-09-10 04:09:27
【问题描述】:

我知道这个问题已经被问过很多次了,但我仍然找不到与我的场景类似的问题。

我正在开发一个 ASP.NET Core WebAPI 项目。 这一切都很好,如果我真的搞砸了,我真的无法重现。

应该使用从 appsettings.Development.json 文件中检索到的连接字符串进行调试:

"DefaultConnection":
  "Data Source=(localdb)\\MSSQLLocalDB;AttachDbFilename=|DataDirectory|MyProj.mdf"

调用context.Database.CreateIfNotExists();时,出现以下错误:

System.Data.SqlClient.SqlException 发生(HResult 0x80131904):

尝试为文件 C:\Users\Shimmy\Documents\Visual Studio 2017\Projects\MyProj\MyProj.Api\AppData\MyProj.mdf 附加自动命名数据库失败。存在同名数据库,或无法打开指定文件,或位于 UNC 共享上。
来源:.Net SqlClient 数据提供程序
StackTrace: 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常, Boolean breakConnection, Action`1 wrapCloseInAction)

我将 WebAPI 作为 Kestrel 控制台应用程序运行。

这是我尝试过的:

  • Integrated Security=TrueMultipleActiveResultSets=True 添加到连接字符串中
  • 添加了连接字符串的完整路径
  • 删除并重新创建 MSSQLLocalDB 实例
  • 重新安装 SQL LocalDB

AttachDbFilename 标志替换为Initial Catalog=MyProj,引发此错误:

System.Data.SqlClient.SqlException 发生
HResult:0x80131904
消息:无法打开登录请求的数据库“MyProj”。登录失败。 用户“SHIMMY-PC\Shimmy”登录失败。
来源:.Net SqlClient 数据提供程序
StackTrace: 在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常, Boolean breakConnection, Action`1 wrapCloseInAction)

SHIMMY-PC\Shimmy 确实出现在实例的用户中:

【问题讨论】:

    标签: asp.net sql-server localdb sql-server-2016-express sql-server-2016-localdb


    【解决方案1】:

    在 .net 核心环境中,您应该可以通过绕过 auto-naming 部分来修复它。只需添加:

    初始目录=MyNotAutoNamedDb;

    连接字符串中的某个位置,它应该可以工作。

    [注意:请勿替换AttachDbFilename!]

    【讨论】:

      【解决方案2】:

      我只有在预先创建数据库文件的情况下才能使用它,这并不是我真正想要的,但我不会为它争吵。

      顺便说一句,我找到了一种方便的方法来删除/创建不会造成太多麻烦的数据库。 我打开开发人员 CLI 并导航到项目/解决方案文件夹,然后调用 dotnet ef database,首先是 drop,然后是 update

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-15
        • 2012-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多