【发布时间】: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,在连接到数据库并单击表文件夹后,我会收到以下错误。
未能为此请求检索数据。
无法连接到服务器(本地)。
用户“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