у нас есть отчет "Звонки за период" типа Excel
Проблема в том что он выгружает разные данные за один и тот же период, если загружать отчет подряд несколько раз (все разы разные данные)
Посмотрели в профайлере какие запросы выполняются в момент создания отчета, картинку прикладываю
какая то не понятная логика там, начала top 10000 потом top 20000 и т.д. Зачем это делается?
есть предположение что данные где то кэшируется, поэтому результат в итоге не верный каждый раз.
Вопрос 1 : почему так происходит, и как этого избежать? (может быть отключить кеширование?)
Вопрос 2: можно ли как то поменять сам sql текст запроса который генерируется для отчета Excel. ?
Андрей, информации недостаточно, чтобы сказать что-то конкретное.
Что это за отчёт, по каким данным строится, стандартный он или самодельный?
Откуда в системе взялась таблица «tbl_Call_9ABFB7C1»? На стандартную не очень похожа.
В чём различие данных в разных запусках отчёта?
"tbl_Call_9ABFB7C1" это псевдоним "[dbo].[tbl_Call]"
часть первого запроса из профайлера:
exec sp_executesql N'SELECT TOP 10000
[tbl_Call_9ABFB7C1].[CallNumber] AS [Col_0D6C9245],
[tbl_Call_9ABFB7C1].[PhoneNumber] AS [Col_8C1120A7],
[J0_tbl_ITService_CEE4647D].[Name] AS [Col_8497D798],
[J0_tbl_ITService_CEE4647D].[ID] AS [Col_8497D798ID],
[J1_tbl_Contact_C44A0EC8].[Name] AS [Col_3713C6C7],
[J1_tbl_Contact_C44A0EC8].[ID] AS [Col_3713C6C7ID],
[J3_tbl_ITService_CEE4647D].[Name] AS [Col_8C0C09B4],
[J3_tbl_ITService_CEE4647D].[ID] AS [Col_8C0C09B4ID],
[J2_tbl_ITServiceI_D7DD168A].[ID] AS [Col_D59DDC1B],
[J4_tbl_ITServiceC_8912228E].[Name] AS [Col_2BD3F2E3],
[J4_tbl_ITServiceC_8912228E].[ID] AS [Col_2BD3F2E3ID],
[J5_tbl_ITServiceP_26DC7F2F].[Name] AS [Col_36E2E264],
[J5_tbl_ITServiceP_26DC7F2F].[ID] AS [Col_36E2E264ID]
FROM
[dbo].[tbl_Call] AS [tbl_Call_9ABFB7C1] ....
.... и далее куча join'ов
Остальные такие же, отличается только количество TOP
Отчет этот самодельный, выгружает звонки за период, создан в конструкторе запросов для отчета типа Excel, на клиенте.
Данные отличаются по количеству записей
например выгружаем звонки за прошлый месяц, получается 1360 записей,
сразу же делаем следующую выгрузку, получается 1425. И так каждый раз.
Причем если напрямую на сервере сделать последний запрос из профайлера (который select top 40000)
данные получаются корректные, т.е. как есть.
подозреваю, что именно из за того что делается несколько одинаковых запросов подряд (отличается только количество TOP), данные считаются неправильно, но может быть причина в другом.
Если это самостоятельно разработанный отчёт, то что-то определённое сказать сложно. Проверяйте его настройки, всё ли верно там заполнено. Проверьте свойства и отчёта, и запроса, по которому он строится. Вот инструкция, об Excel-отчётах на стр. 166, о запросах на стр. 182.