Должен ли я использовать хранимые процедуры для отчетов в службах отчетов SQL - PullRequest
0 голосов
/ 04 августа 2010

Когда я пишу отчет для SQL Reporting Services, я помещаю SQL-скрипт в свой отчет (rdl). Когда я запускаю этот скрипт в SQL Management Studio, это занимает около 1 секунды, но отчет генерируется очень долго (иногда отчет выдает исключение из-за тайм-аута).

Должен ли я написать хранимую процедуру и использовать ее в отчете? Это будет быстрее?

И еще один вопрос. Когда SQL-скрипт возвращает много строк, отчет получает все строки и показывает только одну страницу, или он занимает только одну страницу с SQL-сервера?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 04 августа 2010

Хранимые procs и ad-hoc / динамические sql: http://www.codinghorror.com/blog/2005/05/stored-procedures-vs-ad-hoc-sql.html

Если между выполненным отчетом данные относительно не изменились, вы можете рассмотреть возможность кэширования: http://msdn.microsoft.com/en-us/library/ms155927.aspx

Лично я предпочитаю процы, поскольку это облегчает повторное использование.

Вы можете нажать на RSExecutionlog / (или нет!), Чтобы увидеть, что происходит с точки зрения того, сколько времени занимает обработка: http://social.msdn.microsoft.com/forums/en-US/sqlreportingservices/thread/804174a9-0f22-49a7-93f2-be4dbb3c0a4d

1 голос
/ 04 августа 2010

Я бы использовал хранимые процедуры, но не по каким-либо причинам скорости (я сомневаюсь, что это будет иметь значение).Реорганизовать вашу базу данных намного проще, если вы знаете, что весь ваш вызывающий код находится в хранимых процедурах, а не похоронен в файлах rdl.

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

Пробовали ли вы использовать SQL Profiler во время просмотра отчета, чтобы увидеть, сколько времени занимает промежуток между оператором, получающим данные, отображенные как завершенные, и отчетом, который выводится?

...