发生错误 1042:连接超时已过期

Posted

技术标签:

【中文标题】发生错误 1042:连接超时已过期【英文标题】:Error 1042 has occurred: Connect Timeout expired 【发布时间】:2022-01-13 10:41:23 【问题描述】:

我正在尝试使用以下连接字符串连接到 SQL 服务器,但它给出了“错误连接超时已过期”

我尝试过 telnet 并成功连接。但是,从代码中,即使我尝试指定默认端口,我也无法连接。

有什么做错了吗?提前谢谢你。

            string _connectionString = @"Server=myIP,1433;Database=myDB;User Id=myID;Password=myPass;";
            using (mysqlConnection con = new MySqlConnection(_connectionString))
            
                con.Open();
                string sqlQuery = "SELECT * FROM Inventory";
                using (MySqlCommand cmd = new MySqlCommand(sqlQuery, con))
                
                    MySqlDataReader result = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                    while (result.Read())
                    
                        
                    
                    con.Close();
                
            

Telnet 结果

【问题讨论】:

【参考方案1】:

如果您有 SQL Server "Server=myIP\sqlexpress" 的实例,请使用反斜杠。

如果服务器是您的本地计算机,请改用Windows Authentication

"Server= localhost; Database= myDB; Integrated Security=True;"

或者您可以使用App.Config 配置您的SQL 连接`,这是我使用Windows 身份验证配置我的方式,而不是用户名和密码。首先,将App.config 添加到您的应用程序中。然后添加:

<connectionStrings>  
 <add name="SqlConnectionString" connectionString="Data Source=localhost;Initial Catalog=myDB;Integrated Security=true"/>  
</connectionStrings>

在你的程序上:

string _connectionString = string connString = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;

using (con = new SqlConnection(_connectionString))
                        
            string sqlQuery = "SELECT * FROM Inventory";
            SqlCommand cmd = new SqlCommand(sqlQuery, con)
            con.Open();
                SqlDataReader result = cmd.ExecuteReader();
                while (result.Read())
                
                    
                
                con.Close();
        

别忘了加using directive

using System.Data;
using System.Data.SqlClient;
using System.Configuration;

【讨论】:

我已经尝试过了,它给了我这个错误:"Option 'integrated security' not supported." @JuniorLinq 试试我的最新答案。它适用于我的应用程序。

以上是关于发生错误 1042:连接超时已过期的主要内容,如果未能解决你的问题,请参考以下文章

SqlException:超时已过期

求救解决 sqlcmd:错误:microsoft sql server native client 10.0 : 登陆超时已过期

SchemaModel.SqlSpatialIndex:超时已过期

sqlserver远程连接中链接服务器"”的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "登录超时已过期问题

USB 连接的“信号量超时期限已过”错误

Gradle 的依赖缓存可能已损坏(这有时会在网络连接超时后发生。)