【问题标题】:Cant connect to MSSQL Database via .net core 3.1 Application无法通过 .net core 3.1 应用程序连接到 MSSQL 数据库
【发布时间】:2021-05-13 01:29:20
【问题描述】:

我有一个问题:

我正在使用 .net core 3.1 WPF 应用程序连接到 MSSQL SERVER 2016。 代码:

  SqlConnection conn = new SqlConnection("Server=MYSERVERNAME\\SQLEXPRESS;Database=MYDB;User ID=dbRead;Password=myPASSWORD;");
  conn.Open();

我搜索了很多,发现了这个:https://github.com/dotnet/SqlClient/issues/367 过了一会儿,我得到了一个超时异常,所以我添加了Connect Timeout=60 现在可以建立连接了,但可能需要 >20 秒。

服务器还安装了 2012 年的旧版 MSSQLSERVER。 (因为我们从 2012 年升级到 2016 年) 这个版本有实例 MSSQL 和这个实例和相同的连接字符串 (MYSERVERNAME\\MSSQL) 我没有问题。

如果 iam 使用 .netframework 应用程序,则不会发生错误。

所以我不知道我要做什么?

也许有人遇到了同样的问题。

谢谢

更新: 经过一番研究,我发现了这一点:

Dot net Core – How to fix: TimeOut-Error to MSSQL 2017 (which does not happen with .Net 4.7.1)

通过在连接字符串的服务器参数中指定 np: 限定符来强制使用命名管道

SqlConnection conn = new SqlConnection("Server=np:xxx.xxx.xxx.xxx\\SQLEXPRESS;Database=MYDB;User ID=dbRead;Password=myPASSWORD;");
  conn.Open();

【问题讨论】:

  • 您在使用Microsoft.Data.SqlClient 而不是System.Data.SqlClient 时是否看到同样的问题?
  • 是的,我都试过了。对于 Microsoft.Data.SqlClient 我添加了这个: 到 App.config。希望这是正确的?
  • 通过在连接字符串的服务器参数中指定 np: 限定符来强制使用命名管道来完成这项工作

标签: sql-server .net-core


【解决方案1】:

Data Source=[localhost];Initial Catalog=[database];Persist Security Info=True;User ID=sa;Password=[password]

删除'sqlexpress'

确保您能够使用带有 azure data studio 或 ssis 的适当凭据进行连接。

---- Dotnet EF6 此外,如果您使用的是 EF6(并进行了设置),您可以将其添加到您的脚手架中。如果您使用 cli,生活会更轻松

dotnet ef dbcontext scaffold 'Data Source=[localhost];Initial Catalog=[database];Persist Security Info=True;User ID=sa;Password=[password]' Microsoft.EntityFrameworkCore.SqlServer -o 'Models/[database]/' 文档:https://www.learnentityframeworkcore.com/migrations/commands/cli-commands

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-02
    • 2019-07-10
    • 2021-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多