Произошла ошибка 1042: Истек тайм-аут подключения

#c# #sql-server #database-connection

Вопрос:

Я пытаюсь подключиться к 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=myIPsqlexpress" .

Если сервер является вашей локальной машиной, используйте 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;
 

Комментарии:

1. Я попробовал, и это выдает мне эту ошибку: {«Опция» встроенная безопасность «не поддерживается».}

2. @JuniorLinq попробуйте мой новый ответ. Это работает в моем приложении.