SqlCommand Read () зависает случайным образом при возврате результатов в Windows Server 2016 / SQL Server 2016 - PullRequest
3 голосов
/ 02 апреля 2019

У меня есть специальное приложение, которое создает индекс Lucene на наших различных виртуальных машинах SQL Server, размещенных в Azure (оно запускается локально на компьютере. Я знаю, что это не идеально, но по причинам). Эта программа работает безупречно на нескольких машинах в течение многих лет.

Недавно мы создали новую виртуальную машину, используя Windows Server 2016 и SQL Server 2016. Теперь программа, кажется, зависает случайным образом при вызове reader.read(), пока я не завершу процесс. Это никогда не было проблемой раньше, но версии Windows и SQL Server были в основном 2012 или ниже до этого.

Когда я запускаю приложение на другом компьютере и указываю на новую виртуальную машину SQL Server 2016, оно работает нормально. Когда я запускаю приложение локально на новой виртуальной машине и указываю на себя, оно не будет работать. Также произойдет сбой, если я укажу на ранее работающий SQL Server, пока он работает локально на новой виртуальной машине.

Это почти наводит меня на мысль, что это скорее проблема с Windows 2016, а не с SQL Server 2016.

Это просто использует класс SqlCommand в основном самым простым способом. (Я просто набираю это в качестве примера, это не фактический код).

using (SqlConnection connection = new SqlConnection("connection String"))
{
     connection.Open();

     using (SqlCommand cmd =  new SqlCommand("query", connection)
     {
          connection.Open();

          using (var reader = cmd.ExecuteReader())
          {
               // freezes here randomly
               while (reader.read())     
               {
                   // do stuff
               }
           }
      }
}

Помимо зависания, единственное ожидание, которое я получаю от SQL Server, в основном от "Сетевого ввода-вывода". Это связано с тем, что SQL Server обработал строки в запросе, но приложение внезапно перестало извлекать их.

Я перепробовал все, что мог придумать, поэтому, если у кого-то есть предложения, я был бы очень признателен.

...