Как решить проблему с истечением срока действия TimeOut?
Использование SQL Server 2005 и VB6
Когда я выполняю данные за год или данные более 3 месяцев, он показывает ошибку "Истекло время ожидания". Он не выполняется полностью.
Моя строка подключения
ConnectionString = "Provider=SQLOLEDB.1;" & _
"Persist Security Info=False; " & _
"User ID=" & Settings.SQL_Username & _
"; Password = " & Settings.SQL_Password & "; " & _
"Initial Catalog=" & Settings.SQL_DatabaseName & ";" & _
"Data Source=" & Settings.SQL_ServerAddress
Как решить эту проблему?
Plz...
Ответы
Ответ 1
Там нет "черной магии вуду" - вы можете сделать свой запрос быстрее (вернуть меньше данных, улучшить дизайн базы данных, найти и применить индексы, которые заставляют ваши запросы выполняться быстрее), или затем увеличить тайм-аут, который вы разрешаете запрос на запуск до истечения таймаута.
Это ваши два варианта - возьмите свой выбор.
ОБНОВЛЕНИЕ: небольшой поиск в googling:
Dim cmd
Set cmd = Server.CreateObject("ADODB.Command")
cmd.CommandTimeout = 120 ' number of seconds
Марк
Ответ 2
Вы должны установить .CommandTimeout
в команде. Это не работает, если вы установите его в строке подключения.
Ответ 3
Я бы предположил, что вы либо пытаетесь оттянуть много данных, и заставляете SQL Server больше, чем время ожидания ADO по умолчанию (30 или 40 секунд?), чтобы вернуть данные.
Или это не очень много данных, но у вас нет достойного индекса в таблице, поэтому я бы проверил индексы по вашему запросу (план выполнения - ваш друг здесь).
Или это смесь обоих.
Как долго выполняется запрос, если вы запускаете его прямо в SQL Management Studio?
Ответ 4
Очевидно, вы пытаетесь собрать много данных, и ваша база данных занимает много времени, делая это. Отправьте свою строку подключения, чтобы я мог указать вам, какой параметр изменить, чтобы вы могли увеличить время соединения.
Или вы можете попытаться оптимизировать свое приложение, это займет много времени, чтобы воспитывать данные.