많은 쿼리를 통과 할 때마다 내 쿼리가 멈추는 것 같습니다.SQL 쿼리가 일시 중지됩니다.
status_text.Text = "Check existing records...";
status_text.Refresh();
using (StreamReader reader = new StreamReader(df_text_filename))
{
using (StreamWriter writer = new StreamWriter(df_text_filename + "_temp"))
{
while ((product = reader.ReadLine()) != null)
{
if (product != _aff_svc.DFHeaderProd)
{
df_product = _product_factory.GetProductData(_vsi, product);
}
status_text.Text = "Checking for existing record of vendor record ID " + df_product.SKU;
status_text.Refresh();
if (_pctlr.GetBySKU(df_product.SKU) != null)
{
continue;
}
writer.WriteLine(product);
Application.DoEvents();
}
writer.Close();
}
reader.Close();
}
System.IO.File.Delete(df_text_filename);
System.IO.File.Move(df_text_filename + "_temp", df_text_filename);
코드는 이렇게 빨리, 신속 두 번째 또는 대해 다른 열 개 기록을하지 일시 중지는 GetBySKU을 통해 약 10 배를 실행합니다. 이것은이 특정 쿼리뿐만 아니라 내 프로세스 전체에서 발생합니다.
또한 Application.DoEvents() 화재 여부와 관계없이 발생합니다.
다른 문제는 일관성이 없다는 것입니다. 몇 시간 동안 이런 식으로 일할 수 있습니다. 그런 다음 갑자기 루프가 예상대로 작동합니다.
내 SQL 서버가 프로그램과 동일한 시스템에서 실행 중입니다.
이 동작을 완화하기 위해 리소스를 서버에 할당했지만 아무것도 발견하지 못했습니다.
[SQL Server 프로파일 러] (http://msdn.microsoft.com/en-us/library/ms181091.aspx)를 사용해 보셨습니까? 문제가 응용 프로그램 또는 데이터베이스 측면에 있는지 여부에 대한 단서를 제공 할 수 있습니다. – HABO
"제품이 null이 아님"경우 UI를 업데이트하지 않고 ('DoEvents'를 건너 뜁니다.)'continue'를 사용합니다. - 여기에 "stall"이 실제로는 단지 블록 일 가능성이 있습니까? 이미 마쳤어? SQL에 책임을 묻기 위해 어떤 프로파일 링을 했습니까? SQL 시간을 로깅하고 있습니까? 그렇지 않다면 먼저 해보십시오. 여기서 "SQL 쿼리"가 'GetBySKU'라고 가정합니다. –
또한,'Application.DoEvents'를 사용할 때마다 CPU가 새끼 고양이를 죽입니다. 단지 sayin '입니다. –