2013-02-26 4 views
1

У меня есть программа vb.net, которая запускает хранимую функцию и заполняет набор данных. Однако из-за объема информации, которую вытащили, иногда это время на некоторых базах данных.SQL Query TimeOut

Как увеличить таймаут запроса, чтобы не попасть в таймаут?

В моей кнопки формы я следующий код, который не работает (это еще раз из и программных ошибок)

Me.1TableAdapter.Connection.ConnectionString = "Data Source=10.0.1.1;Initial Catalog=Database;Persist Security Info=True;User ID=USER;Password=PASSWORD; Connection Timeout = 120" 

Me.1TableAdapter.Fill(Me.Dataset.1, TodayDt, TodayEnd) 

Me.2TableAdapter.Fill(Me.Dataset.1, TodayDt, TodayEnd) 

я получаю сообщение об ошибке:

System.Data .SQLClient.SQLException: время ожидания истекло. Период ожидания истекал до завершения операции или сервер не ответил.

+0

проверить это [введите описание ссылки здесь] [1] [1]: http://stackoverflow.com/questions/2748706/connection-timeout-and -соединение-время жизни – SP007

ответ

11

Соединение имеет тайм-аут, но также и команда, запущенная против соединения. Этот тайм-аут рассчитан на то, как долго ждать, пытаясь установить соединение. См. http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectiontimeout.aspx

Итак, предположим, что вы используете SqlCommand, тогда задайте свойство CommandTimeout команды.

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtimeout.aspx

+3

Право. Тайм-аут запроса по умолчанию - 30 секунд IIRC. Я нахожу это раздражающим, что нет способа указать тайм-аут запроса по умолчанию в строке подключения: вам нужно добавить ключ для него в свой файл конфигурации, чтобы переопределить его так, чтобы не требовать новой сборки. Также обратите внимание: ** Это свойство представляет собой совокупный тайм-аут (для всех сетевых пакетов, которые считываются при вызове метода) для всех сетевых чтений во время выполнения команды или обработки результатов. Тайм-аут все же может произойти после возвращения первой строки и не включает время обработки пользователя, а только время чтения сети. ** –

+0

Я немного смущен этим. Я не знаю, с чего начать ... Я предполагаю, что мне нужно увеличить тайм-аут заполнения таблицы. ... Но приведенные выше ссылки путают меня. – Shmewnix

+1

См. Http://stackoverflow.com/questions/1192171/how-can-i-change-table-adapters-command-time-out и http://stackoverflow.com/questions/975898/control-tableadapter-command- Тайм-аут во всем мире –