-
Ошибка: EOleException Время ожидания истекло
Пишу:
..тут делается запрос, вычисляются и подставляются параметры.. .. и делаем контроль memo1.Lines.Add(qMain.SQL.Text); for j := 0 to qMain.Parameters.Count - 1 do memo1.Lines.Add(qMain.Parameters[j].Name + '='+ String(qMain.Parameters[j].Value));
qMain.Open; // тут Ошибка Время ожидания истекло exit; .. Затем из мемо копирую в SQL Server Management Studio, заменяю параметры, запускаю - 3-4 секунды, результаты есть.
Чего можно сделать, куда копать?
-
> 12 © (09.04.10 09:11)
увеличить qMain.CommandTimeout
-
пробовал, 20 минут жду - ничего из мемо копирую в SQL Server Management Studio, заменяю параметры, запускаю - 3-4 секунды
-
ошибка в запросе видимо. или отбирается немерянное кол-во данных и все фетчится.. в отличии от менеджера
-
Чего можно сделать, куда копать?
Для начала проверить, что коннекшен запроса в проекте совпадает с коннекшеном студии.
Возможно он банально смотрит не туда (на несуществующий сервер)
-
> ошибка в запросе видимо. или отбирается немерянное кол- > во данных и все фетчится.. в отличии от менеджера
Всегда все отбираю и там, и там несколько тысяч (2-3, максимум 4) строк получается
-
> turbouser (09.04.2010 11:08:01) [1]
Да у него разные запросы в Дельфи и в SSMS а может еще и строка подключения.
-
все, пятница что ли..вообще не понимаю, чем эти запросы различаются? Первого не дождусь, второй 2 секунды..
№1 ------ use ccc
select count (*)
from dbo.request r join dbo.object o on r.id_object = o.id_object join dbo.filials_sct f on f.id_sct = r.id_sct join dbo.sct sct on sct.id_sct = r.id_sct join dbo.oper_log ol on ol.ring_id = r.ring_id where r.id_sct = 26 and start_time between '07-04-2010' and '08-04-2010' and r.id_object in( 183, 184, 189) and len(r.aon) = 10 and left(r.aon, 1) <> 9 and r.ring_id_cisco is null and r.ring_id is not null and f.id_sct is not null --------------------------- №2 declare @ID int, @CODE int, @FDATE datetime, @SDATE datetime
set @ID = 26 --set @CODE = 183 set @FDATE = '07-04-2010' set @SDATE = '08-04-2010'
select distinct Cast('' as char(12)) + --Лицевой счет Cast(r.aon as char(10)) + --Телефон А Cast(Convert(char(10), r.start_time, 112) as char(10)) + --Дата услуги (ггггммдд) Cast('' as char(10)) + --Код услуги Cast('' as char(15)) + --Сумма Cast('1' as char(15)) + --Количество услуг Cast('М09' as char(10)) + --Номер пачки Cast( ROW_NUMBER()OVER(order by r.aon) as char(10)) + --Номер документа. ROW_NUMBER с версии 2005! Cast('' as char(60)) --Дополнительная информация from dbo.request r join dbo.object o on r.id_object = o.id_object join dbo.filials_sct f on f.id_sct = r.id_sct join dbo.sct sct on sct.id_sct = r.id_sct join dbo.oper_log ol on ol.ring_id = r.ring_id where r.id_sct = @ID and start_time between @FDATE and @SDATE and r.id_object in (183, 189, 184, 42) -- = @CODE and len(r.aon) = 10 and left(r.aon, 1) <> 9 and r.ring_id_cisco is null and r.ring_id is not null and f.id_sct is not null
-
> Anatoly Podgoretsky © (09.04.10 12:01) [6]
да где же разные то? Говорю же, перед запуском дернул текст запроса и все его параметры в мемо, из мемо в Management Studio, далее заменяю параметры :ID на 26 ID=26 - это тоже в мемо у меня. Ничего не беру стороннего ни откуда
> Медвежонок Пятачок © (09.04.10 11:49) [4]
посмотрел, туда.
-
надо не смотреть, а проверять. например профайлером.
-
Свелось к такому. Один 2 секунды, второй не дождусь. Что за???
Не дождусь use ccc select count(*) from dbo.request r join dbo.object o on r.id_object = o.id_object join dbo.filials_sct f on f.id_sct = r.id_sct join dbo.sct sct on sct.id_sct = r.id_sct join dbo.oper_log ol on ol.ring_id = r.ring_id where r.id_sct = 26 and start_time between '07-04-2010' and '08-04-2010' and r.id_object in (183, 189, 184) -- на одно условие меньше! and len(r.aon) = 10 and left(r.aon, 1) <> 9 and r.ring_id_cisco is null and r.ring_id is not null and f.id_sct is not null
2 секунды!! use ccc select count(*) from dbo.request r join dbo.object o on r.id_object = o.id_object join dbo.filials_sct f on f.id_sct = r.id_sct join dbo.sct sct on sct.id_sct = r.id_sct join dbo.oper_log ol on ol.ring_id = r.ring_id where r.id_sct = 26 and start_time between '07-04-2010' and '08-04-2010' and r.id_object in (183, 189, 184, 42) -- ААА КАК ЖЕ ТАК!!!!!! and len(r.aon) = 10 and left(r.aon, 1) <> 9 and r.ring_id_cisco is null and r.ring_id is not null and f.id_sct is not null
-
Я не слепой и вижу
for j := 0 to qMain.Parameters.Count - 1 do
И наверно где то в Дельфи в запросе есть :ID
В приведеных запросах этого нет. Поэтому проверка из SSMS не адекватно тому, что написано в Дельфи. Кроме того тебе еще намекали на ConnetiongString, попробуй выполнить из Дельфи простой запрос SELECT * FROM tbl, вместо старого запроса, строго в том же компоненте, в котором оно не работает.
-
> Медвежонок Пятачок (09.04.2010 12:10:09) [9]
Запрос мы видимо не увидим.
-
интересно, на кой леший в делфийском запросе использовать use? сразу-то нельзя сделать нужную базу текущей?
ну или на худой конец from ссс.dbo.request r .....
-
> Запрос мы видимо не увидим.
почему так(т.е.declare всякие) - пока тестирую declare @ID int, @CODE int, @FDATE datetime, @SDATE datetime
set @ID = :IdSCT --26
set @CODE = :IdObject --183
set @FDATE = :FirstDATE --'29-03-2010'
set @SDATE = :SecondDATE --'30-03-2010'
select distinct
Cast('' as char(12)) + --Лицевой счет
Cast(r.aon as char(10)) + --Телефон А
Cast(Convert(char(10), r.start_time, 112) as char(10)) + --Дата услуги (ггггммдд)
Cast('' as char(10)) + --Код услуги
Cast('' as char(15)) + --Сумма
Cast('1' as char(15)) + --Количество услуг
Cast('М09' as char(10)) + --Номер пачки
Cast( ROW_NUMBER()OVER(order by r.aon) as char(10)) + --Номер документа. ROW_NUMBER с версии 2005!
Cast('' as char(60)) --Дополнительная информация
as StringForWrite
from
dbo.request r
join dbo.object o on r.id_object = o.id_object
join dbo.filials_sct f on f.id_sct = r.id_sct
join dbo.sct sct on sct.id_sct = r.id_sct
join dbo.oper_log ol on ol.ring_id = r.ring_id
where
r.id_sct = @ID
and start_time between @FDATE and @SDATE
and r.id_object = @CODE
and len(r.aon) = 10
and left(r.aon, 1) <> 9
and r.ring_id_cisco is null
and r.ring_id is not null
and f.id_sct is not null
> Медвежонок Пятачок © (09.04.10 13:33) [13] > > интересно, на кой леший в делфийском запросе использовать > use?
это уже в аналайзере я просто к чему - что-то с БД не так, мне кажется.
-
это уже в аналайзере
Ну так у тебя тогда оба запроса в аналайзере (оба с use).
А при чем здесь делфи?
-
скучный ты... :) это я потом понял.
-
Всем спасибо за поддержку и обсуждение моей проблемы,
кому интересно - настоящая проблема в БД, индекс порушился.
-
> 12 (09.04.2010 15:04:17) [17]
Да так, что в SSMS работает, а в Дельфи нет. Расскажи нам еще сказок.
-
в делфи я не тот период брал, не по тем кодам - дымал какая разница, за какой день..
-
а мы думали: а какая разница, что в делфи ты не получаешь результатов. в студии же они есть, значит все ок и проблемы нет
-
извините, ввел в заблуждение
|