Пустой датасет

Здравствуйте,

(TSCRM 3.2, MSSQL Server 2008)

При открытии датасета ds_MPlan.Open() в профайлере отлавливается запрос, который возвращается несколько строк, но ds_MPlan.RecordsCount при этом равен 0.
Если дело не в версии SQL Server, как тогда справиться с этой проблемой?

...
ApplyDateFilter(ds_MPlan, 'ShowsDate', StartShow.getVarDate(), EndShow.getVarDate());
        ApplyDatasetFilter(ds_MPlan, 'ScreenID', ScreenID, true);  
        ds_MPlan.Open();
        ShowInformationDialog(ds_MPlan.RecordsCount);
...

// На SQL Server 2005 работает. И на 2008 работало до какого-то момента.

Нравится

16 комментариев

Количество записей в датасете ds_MPlan.PageRecordsCount. Может стоит им пользоваться.
ds_MPlan.RecordsCount шлет еще один запрос типа
select count(*) from (select ...)

А Вы запросы выполняете под одним пользователем?

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

А вот эти два запроса
1)Который идет на Open
2)Который идет на RecordsCount в середине select count(*) from (...)
они одинаковые?

да, и при этом запрос на RecordsCount возвращает нормальное число, а не 0.

Да ну, не бывает такого :)

Берем первый запрос на Open. Он ничего не возвращает. Дописываем в начало
select count(*) from (
и в конец
)
Выполняем. Получаем значение отличное от 0. Так у Вас получается?

Я бы еще поверил что какой-то запрос неправильно генерится террасофтом. Но так выходит мегабага в MSSQL.

Сами в это не можем поверить.

Не совсем так. Запрос, посланный на Open, возвращает значения, но если его в MSSQL запустить;
а датасет при этом пустой почему-то.
Связи сервисов в терасофте проверены сто раз.

Один и тот же код на 2005 сервере нормально отрабатывает, а на 2008 вот такое чудо :(

А, так MS честно работает. Это, наверное, компоненты доступа к нему подглючивают.
Разве TS совместим с 2008 MSSQL? Я думал только 2000 и 2005

официально не поддерживается. наверно он и дает сбои.

Добавлю свои комментарии:

Мы тестировали 3.3.0 и 3.3.1 с MS SQL 2008 - проблем не было замечено.

В одном из наших проектов клиент купил MS SQL 2008 и ТС 3.2.1.14 - с январе 2009г. ошибок со стороны MS SQL 2008 не было замечено!

--
www.it-sfera.com.ua
Terrasoft Solution Partner

Может это зависит от конкретной машины? MDAC, допустим, не тот.

"Kat" написал:// На SQL Server 2005 работает. И на 2008 работало до какого-то момента.

Меня смущает последняя строчка... Значит что-то изменилось...

--
www.it-sfera.com.ua
Terrasoft Solution Partner

а посмотреть, какой запрос приходит на сервер в Profiler?

Все оказалось совсем просто: было запущено два терасофта, смотрящие на разные базы, поэтому сервер БД путался.

всем спасибо ;)

+1

Бывает :) У меня однажды фильтр забыли отключить по-умолчанию... 3 часа рыли где проблема ;)

--
www.it-sfera.com.ua
Terrasoft Solution Partner

"Kat" написал:сервер БД путался

Так это все его происки :)

Со всеми наверное было. Да, когда по ошибке правишь в одном месте , а тестишь в другом на чинаешь верить в потусторонние силы и высший разум :)

"Kat" написал:Мы тестировали 3.3.0 и 3.3.1 с MS SQL 2008 - проблем не было замечено.

MSSQL 2008 поддерживается официально, начиная с версии 3.3.1. Были замечены проблемы при соединении с базой из Vista (64-бита) и Windows Server 2008 (32-бита). Сейчас разбираемся.

Показать все комментарии