Все внезапно, Sql Server Тайм-аут - PullRequest
1 голос
/ 25 мая 2010

Мы получили устаревшее приложение vb.net, которое работало годами. Но вдруг он перестает работать вчера и дает время ожидания сервера SQL Большая часть приложения выдает ошибку тайм-аута, одна часть, например, ниже кода:

command2 = New SqlCommand("select * from Acc order by AccDate,AccNo,AccSeq", SBSConnection2)
        reader2 = command2.ExecuteReader()
    If reader2.HasRows() Then
        While reader2.Read()
            If IndiAccNo <> reader2("AccNo") Then
                CAccNo = CAccNo + 1
                CAccSeq = 10001
                IndiAccNo = reader2("AccNo")
            Else
                CAccSeq = CAccSeq + 1
           End If
            command3 = New SqlCommand("update Acc Set AccNo=@NewAccNo,AccSeq=@NewAccSeq where AccNo=@AccNo and AccSeq=@AccSeq", SBSConnection3)
            command3.Parameters.Add("@AccNo", SqlDbType.Int).Value = reader2("AccNo")
        command3.Parameters.Add("@AccSeq", SqlDbType.Int).Value = reader2("AccSeq")
          command3.Parameters.Add("@NewAccNo", SqlDbType.Int).Value = CAccNo
        command3.Parameters.Add("@NewAccSeq", SqlDbType.Int).Value = CAccSeq

      command3.ExecuteNonQuery()
    End While
End If

Это работало и теперь дает время ожидания в command3.ExecuteNonQuery () Есть идеи?

~~~~~~~~~~~ Некоторая информация:

Нет ничего, что было изменено в сети, и приложение использует локальную базу данных Основная проблема в том, что даже в среде разработки это больше не работает

Ответы [ 13 ]

0 голосов
/ 03 июня 2010

После предложений HLGEM я бы проверил данные и убедился, что все в порядке В подобных случаях 95% времени это данные.

0 голосов
/ 25 мая 2010

Вы можете переписать обновление как один запрос. Это будет выполняться намного быстрее, чем исходный запрос.

UPDATE subquery
SET AccNo = NewAccNo, AccSeq = NewAccSeq
FROM
    (SELECT AccNo, AccSeq, 
        DENSE_RANK() OVER (PARTITION BY AccNo ORDER BY AccNo) NewAccNo,
        ROW_NUMBER() OVER (PARTITION BY AccNo ORDER BY AccDate, AccSeq)
            + 10000 NewAccSeq
     FROM Acc) subquery
0 голосов
/ 25 мая 2010

Можем ли мы убедиться, что SQLConnection работает нормально.Может случиться так, что критерии входа в систему SQL изменятся, и соединение получит тайм-аут.Возможно, будет более полезным, если вы разместите здесь сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...