У меня есть представление, которое я пытаюсь использовать для заполнения TableAdapter. В своем коде я правильно заполняю адаптер таблицы в первый раз, фильтрую свой источник привязки и использую datarowviews для циклического перебора строк данных и выполнения необходимых обновлений (выполняемых хранимой процедурой). Теперь проблема в том, что после этих обновлений мне нужно снова заполнить табличный адаптер, чтобы он отражал эти изменения. Иногда вид, который я использую, не будет иметь результатов, в других случаях это может быть. Я не могу привести конкретный пример, поскольку данные чувствительны к работе, но я постараюсь создать упрощенный пример
_taMyView.Fill(_dsMyConnection.MyView)
_bsMyView.Filter = "Number = 1"
For Each drvMyViewRow in _bsMyView
Do Stuff
'stored procedure that updates MyTable (what the view was created from)
Next
_taMyView.Fill(_dsMyConnection.MyView)
_bsMyView.Filter = "Number = 0"
Это точная ошибка «Истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает.»
Хорошо, вы заметите, что я заполняю свое представление, затем фильтрую эти результаты по столбцу Number, равному 1. Я перебираю все эти результаты и обновляю таблицу, из которой создано мое представление. После выхода из цикла я нажал второй .fill, который истекает примерно через 20 секунд. После тестирования этот тайм-аут возникает только тогда, когда MyView не содержит никаких записей. Любая помощь будет принята с благодарностью.
Некоторые дополнительные лакомые кусочки. Я использую Visual Studio 2010 и sqlserver 2008. Вся работа выполняется в VB.NET. Кроме того, во время отладки я сделал паузу во второй заливке, пошел к Toad for Data Analytics и запустил SELECT * FROM MyView, который не остановился, и возвратил пустую таблицу результатов примерно через 19 секунд. Я также пытался избавиться от адаптера таблицы перед вторым заполнением, но у него аналогичное время ожидания. Извините, если этот ответ кажется очевидным или что-то в этом роде, я всего лишь стажер и все еще изучаю язык.
EDIT
MyAdapter.Adapter.SelectCommand.CommandTimeout = 0
Похоже, что сработало, насколько я понимаю, оно позволяет ему работать до тех пор, пока оно не завершится (SQLServer отключит его, если соединение будет оставаться открытым дольше, чем позволяет). Ta.fill работает примерно с той же скоростью, что и Жаба, набирая около 19-20 секунд, и не выдает ошибку после нескольких тестов. Спасибо за помощь