如何在Mac上将ASP.Net Core连接到SQL Server Docker容器

31

我正在使用Visual Studio 2017在Mac上开发一个ASP.Net核心MVC应用程序。但是,我遇到了一些连接到运行在Docker容器上的SQL Server实例的问题。

这是我正在使用的连接字符串:

"ConnectionStrings": {
    "myCustomConnString": "Server=localhost;Database=myDataBase;User Id=sa;Password=myPassw0rd;Trusted_Connection=True;MultipleActiveResultSets=true"
  }

这是我得到的错误:

无法使用Kerberos进行身份验证。请确保在客户端上使用“kinit”初始化了Kerberos,并为SQL Server注册了服务主体名称,以允许Kerberos进行身份验证。 ErrorCode = InternalError,Exception = Interop + NetSecurityNative + GssApiException:GSSAPI操作失败,错误为-请求了不受支持的机制(未知的机制代码0)。

使用SQL Operation Studio、Azure Data Studio或Visual Studio Code并传递相同的参数,我可以连接到SQL Server的docker实例。但是运行ASP.Net core应用程序时却不能连接。因此,我不确定是否缺少连接字符串的任何其他参数。

有人之前试过吗?

敬礼!


14
发现如何连接到 SQL Server 的 Docker 实例。我需要设置 Trusted_Connection=false。之后,在运行我的 ASP.Net Core 应用程序时,我能够成功连接。 - MikePR
谢谢!我在这个问题上浪费了很多时间,但现在已经解决了! - Dontreadonme
7个回答

39

我知道 @MikePR 的评论已经作为答案了,但是我想为我遇到的问题提供一个更完整的答案。即使使用了带有 Trusted_Connection=false 的连接字符串,我仍然无法执行 dotnet ef database 命令。在 这篇文章 的帮助下,我成功使用了以下连接字符串:

"ConnectionStrings": {
    "myCustomConnString": "Server=localhost,1433\\Catalog=myDatabase;Database=myDatabase;User=username;Password=MYSecurePWD;"
  }

现在,我的迁移针对 Docker 容器中的 SQL Server 运行。请注意,该文章未包括使用 Trusted_Connection=false。我假设 false 是默认值。


16

我遇到了同样的问题,只需从连接字符串中删除Trusted_Connection=True;就可以解决。


4

通过设置Trusted_Connection=False解决了我的问题。


4

我通过移除 Trusted_Connection 解决了我的问题。


3

我按照以下方式运行连接字符串,它起作用了。

"ConnectionStrings": {
    "DevConnection": "Server=localhost,1433;Database=TarjetaCreditoDB;User Id=sa;Password=myPassw0rd;MultipleActiveResultSets=True;"
  }

1

以下字符串对我有效。

 Server=sql-server-db,1433;Database=EMP_DB_V2;User=SA;Password=Test_pwd@786;Trusted_Connection=False;MultipleActiveResultSets=True;

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

0
我按照以下方式运行了连接字符串,它成功了。
"ConnectionStrings": {
    "DefaultConnection": "Server=localhost,1433; Database=ERPDb; User=sa; Password =*****; Trusted_Connection=false; TrustServerCertificate=true;"
  },

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接