Как решить проблему с истечением срока действия 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

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

Или вы можете попытаться оптимизировать свое приложение, это займет много времени, чтобы воспитывать данные.