リモートデータベース(SQL Server 2012)にアプリケーションを接続していて、「接続タイムアウトが切れました」という問題に直面しました。ログイン前のハンドシェイク確認応答を消費しようとしている間にタイムアウト時間が経過しました。 pre-loginハンドシェークが失敗したか、またはサーバーが時間内に応答できなかったためです。このサーバーに接続しようとしている時間は - [Pre-Login] initialization = 211; handshake = 14787;ログイン前のハンドシェイク確認応答を消費しようとしている間にタイムアウト時間が経過しました。 (1日に数回)
アプリケーションはリモートデータベースで問題なく動作していますが、このエラーは1日に数回しか発生しません(たとえば、1日に100回の試行のうち5回)、すべてのアプリケーションがこのデータベースで正常に動作しています。
以下は、SQL Serverデータベースに接続してクエリを実行するためのC#コードです。
List<string> lstDuplicateSNames = new List<string>();
string commaSeparatedStudentNames = "X,Y,Z,A,B,C";
string query = "SELECT DISTINCT(Student_NAME) FROM V_STUDENT_RECORDS WHERE Student_NAME IN ('" + commaSeparatedStudentNames + "')";
using (SqlConnection myConnection = new SqlConnection("Database=Student_DB;Server=nkj-connect.com;Integrated Security=true;"))
{
using (SqlCommand myCommand = new SqlCommand())
{
myCommand.Connection = myConnection;
myCommand.CommandType = CommandType.Text;
myCommand.CommandText = query;
myCommand.CommandTimeout = 0;
myCommand.Connection.Open();
using (SqlDataReader reader = myCommand.ExecuteReader())
{
// Check is the reader has any rows at all before starting to read.
if (reader.HasRows)
{
while (reader.Read())
{
lstDuplicateSNames.Add(reader.GetString(0));
}
}
}
}
}
ここでは何が欠けているのかをご提案ください。
タイトルの変更を検討してください – Clijsters
タイトルの誤りはありますか? –
エラーメッセージを引用しているようです。 – Clijsters