ASP.NET Core:尝试为文件附加自动命名的数据库失败

时间:2017-09-10 04:09:28

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

我知道这个问题已被多次询问,但我仍然无法找到类似于我的情况的问题。

我正在开发一个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数据提供商
  的栈跟踪:      在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数据提供商
  的栈跟踪:      在System.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,Boolean breakConnection,Action`1 wrapCloseInAction)

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

enter image description here

2 个答案:

答案 0 :(得分:0)

我只有在预先创建数据库文件时才能使用它,这不是我想要的,但我不会为它而战。

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

答案 1 :(得分:0)

在.net核心环境中,您应该能够通过绕过auto-naming部分来对其进行修复。只需添加:

  

Initial Catalog = MyNotAutoNamedDb;

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

[注释:请勿替换AttachDbFilename!]