Истекло время ожидания для INSERT-запроса - PullRequest
0 голосов
/ 19 марта 2009

Я пытаюсь вставить строку в таблицу, используя простой запрос INSERT в транзакции. Он отлично работает в SQL Server, но я не могу вставить данные, используя мой бизнес-объект.

Я вызываю запрос SELECT, используя команду как:

Using cm As New SqlCommand
    With cm
        .Connection = tr.Connection
        .Transaction = tr
        .CommandType = CommandType.Text
        .CommandText = Some Select Query
        .ExecuteScalar()
         '' Do something

        .CommandText = Insert Query
        .ExecuteNonQuery()
    End With
End Using

Я получаю сообщение об ошибке истечения периода ожидания в строке ".ExecuteNonQuery ()".

На этом этапе любой другой запрос DML работает отлично.

Кто-нибудь может сказать мне причину?

Ответы [ 2 ]

0 голосов
/ 20 марта 2009

Похоже, ваш запрос использует неверный план запроса. Попробуйте установить ARITHABORT ON, и это должно обойти план запроса:

Dim arithabortCmd As New SqlCommand("SET ARITHABORT ON", cn)
arithabortCmd.ExecuteNonQuery()

Я бы удостоверился, что индексы базы данных обновлены, выполнив этот SQL в базе данных:

-- Execute this to rebuild all for a given database. Replace the <databasename> after EXEC.
EXEC <databasename>..sp_MSforeachtable @command1='DBCC DBREINDEX (''*'')', @replacechar='*'
0 голосов
/ 19 марта 2009

В Management Studio для соединений установлено не время ожидания, что может объяснить, почему он там работает. Вы можете сделать это в своем коде, установив для свойства .Timeout вашего соединения значение 0. Однако это не рекомендуется, если вы не действительно имеете это в виду.

Вместо этого нам нужно выяснить, что занимает так много времени. Требуется ли много времени для завершения запроса в Management Studio? Может ли это быть ожидание при совершении транзакции? Можете ли вы зарегистрироваться, чтобы узнать, где приложение тратит свое время?

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