Конференция "Базы" » Запрос работает из Management Studio. Из программы нет. [D7, MSSQL]
 
  • 12 © (09.04.10 09:11) [0]
    Ошибка: 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 секунды, результаты есть.

    Чего можно сделать, куда копать?
  • turbouser © (09.04.10 11:08) [1]

    > 12 ©   (09.04.10 09:11)  

    увеличить qMain.CommandTimeout
  • 12 © (09.04.10 11:15) [2]
    пробовал, 20 минут жду - ничего
    из мемо копирую в SQL Server Management Studio, заменяю параметры, запускаю - 3-4 секунды
  • Виталий Панасенко(дом) (09.04.10 11:30) [3]
    ошибка в запросе видимо. или отбирается немерянное  кол-во данных и все фетчится.. в отличии от менеджера
  • Медвежонок Пятачок © (09.04.10 11:49) [4]
    Чего можно сделать, куда копать?

    Для начала проверить, что коннекшен запроса в проекте совпадает с коннекшеном студии.

    Возможно он банально смотрит не туда (на несуществующий сервер)
  • 12 © (09.04.10 11:51) [5]

    > ошибка в запросе видимо. или отбирается немерянное  кол-
    > во данных и все фетчится.. в отличии от менеджера


    Всегда все отбираю
    и там, и там
    несколько тысяч (2-3, максимум 4) строк получается
  • Anatoly Podgoretsky © (09.04.10 12:01) [6]
    > turbouser  (09.04.2010 11:08:01)  [1]

    Да у него разные запросы в Дельфи и в SSMS а может еще и строка подключения.
  • 12 © (09.04.10 12:03) [7]
    все, пятница что ли..вообще не понимаю, чем эти запросы различаются?
    Первого не дождусь, второй 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
  • 12 © (09.04.10 12:07) [8]

    > Anatoly Podgoretsky ©   (09.04.10 12:01) [6]

    да где же разные то?
    Говорю же, перед запуском дернул текст запроса и все его параметры в мемо, из мемо в Management Studio, далее заменяю параметры :ID на 26
    ID=26 - это тоже в мемо у меня.

    Ничего не беру стороннего ни откуда  


    > Медвежонок Пятачок ©   (09.04.10 11:49) [4]

    посмотрел, туда.
  • Медвежонок Пятачок © (09.04.10 12:10) [9]
    надо не смотреть, а проверять.
    например профайлером.
  • 12 © (09.04.10 12:54) [10]
    Свелось к такому. Один 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
  • Anatoly Podgoretsky © (09.04.10 13:03) [11]
    Я не слепой и вижу

    for j := 0 to qMain.Parameters.Count - 1  do

    И наверно где то в Дельфи в запросе есть :ID

    В приведеных запросах этого нет. Поэтому проверка из SSMS не адекватно тому, что написано в Дельфи. Кроме того тебе еще намекали на ConnetiongString, попробуй выполнить из Дельфи простой запрос SELECT * FROM tbl, вместо старого запроса, строго в том же компоненте, в котором оно не работает.
  • Anatoly Podgoretsky © (09.04.10 13:04) [12]
    > Медвежонок Пятачок  (09.04.2010 12:10:09)  [9]

    Запрос мы видимо не увидим.
  • Медвежонок Пятачок © (09.04.10 13:33) [13]
    интересно, на кой леший в делфийском запросе использовать use?
    сразу-то нельзя сделать нужную базу текущей?

    ну или на худой конец
    from  ссс.dbo.request r .....
  • 12 © (09.04.10 13:53) [14]

    > Запрос мы видимо не увидим.

    почему так(т.е.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?

    это уже в аналайзере
    я просто к чему - что-то с БД не так, мне кажется.
  • Медвежонок Пятачок © (09.04.10 14:03) [15]
    это уже в аналайзере

    Ну так у тебя тогда оба запроса в аналайзере (оба с use).

    А при чем здесь делфи?
  • 12 © (09.04.10 14:16) [16]
    скучный ты... :)
    это я потом понял.
  • 12 © (09.04.10 15:04) [17]
    Всем спасибо за поддержку и обсуждение моей проблемы,

    кому интересно - настоящая проблема в БД, индекс порушился.
  • Anatoly Podgoretsky © (09.04.10 15:39) [18]
    > 12  (09.04.2010 15:04:17)  [17]

    Да так, что в SSMS работает, а в Дельфи нет.
    Расскажи нам еще сказок.
  • 12 © (09.04.10 16:06) [19]
    в делфи я не тот период брал, не по тем кодам - дымал какая разница, за какой день..
 
Конференция "Базы" » Запрос работает из Management Studio. Из программы нет. [D7, MSSQL]
Есть новые Нет новых   [134433   +22][b:0][p:0.002]