【问题标题】:On connection.open program immediately throws error code 10054 (Connection forcibly closed)在connection.open程序上立即抛出错误代码10054(强制关闭连接)
【发布时间】:2017-06-24 22:12:28
【问题描述】:

使用 Visual Studio 2017(C# 项目)和 SQL Server 2016

不确定我做错了什么。我已经将我的整个方法简化为这段代码。在调用connection.Open 的那一刻,我立即得到了这个异常:

(10054) 现有连接被远程主机强行关闭

try
{
    SqlConnection connection = new SqlConnection("Data Source = DEVELOPMENTBOX\\GAMEDATABASE; Initial Catalog = ItemDB; User ID = dataReader; Password = ********");
    connection.Open();
    System.Console.WriteLine("Succcess");
    connection.Close();
}
catch (System.Exception e)
{
    System.Console.WriteLine(e.Message);
}

我检查过的内容:

  • 我正确地包括using System.Data.SqlClient
  • 已选中允许远程连接到此服务器,超时时间为 600。
  • 已启用 GAMEDATABASE(命名管道、TCP/IP)协议。
  • 我可以通过 IP 和主机名 ping 开发框。
  • 数据库安全设置为 SQL Server 和 Windows 身份验证模式。
  • 两台计算机上的防火墙均已禁用。
  • 三次检查了我的用户名和密码。
  • 通过www.connectionstrings.com 尝试了替代连接字符串。

注意事项:

DevelopmentBox 是我本地网络上的一台机器。另外,如果我尝试使用内置的 Visual Studio Server Explorer,在连接到数据库并单击表文件夹后,我会收到以下错误。

Error Message

未能为此请求检索数据。

无法连接到服务器(本地)。

用户“dataReader”登录失败。

我很茫然。任何帮助将不胜感激。

【问题讨论】:

  • 你的第一个链接给了我这样的想法,也许 mono 不支持 MSSQL 2016 并且查看 System.Data.SqlClient.dll 只能到 2008 年。mono-project.com/docs/database-access/providers/sqlclient 这听起来对吗?感觉这很重要,因为它不支持 08 年以后的任何东西。
  • 您是否 100% 确定用户存在且密码正确?
  • 第一个删除的数据源,因为源已经在初始目录中指定 Initial Catalog = ItemDB 并且是多余的。由于 Windows 用户帐户,用户和密码通常不起作用。除非为访客帐户设置或远程计算机在用户组中,否则窗口 PC 将不允许远程连接。最好使用 SQL Server Windows 组帐户作为凭据并将用户放入组帐户。能够访问数据库的远程用户必须有一个帐户,或者客户端电脑和服务器电脑必须在同一个组中。
  • SQL Server 错误日志中有什么有趣的内容吗?

标签: c# sql-server exception database-connection


【解决方案1】:

查看 mjwills 发布的链接后。我发现我的问题在于我使用的 Mono 版本。

在本文发布时,最新版本仅支持 SQL Server 2008。当我将上面完全相同的代码粘贴到使用 .NET 4.7 库的新项目中时,它运行良好。

因此,感谢 mjwills 发布那篇文章,否则将永远不会查看受支持的系统。

@mjwills。我想感谢你,但我不能将 cmets 标记为答案!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多