Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Оптимизация экспорта PDF огромных отчетов в Sql Reporting Services 2005
Во-первых, я понимаю, что это ужасная идея-запускать очень большие / длинные отчеты. Я знаю, что у Microsoft есть эмпирическое правило, гласящее, что отчет SSRS не должен занимать более 30 секунд для выполнения. Однако иногда гигантские отчеты являются предпочтительным злом из-за внешних сил, таких как соблюдение государственных законов.
На моем рабочем месте у нас есть приложение asp.net (2.0), которое мы перенесли из Crystal Reports в SSRS. Из-за большой базы пользователей и сложных требований к отчетности UI у нас есть набор экранов, который принимает введенные пользователем параметры и создает графики для запуска в течение ночи. Поскольку приложение поддерживает несколько платформ отчетов, мы не используем средства планирования / моментального снимка SSRS. Все отчеты в системе генерируются запланированным консольным приложением, которое принимает введенные пользователем параметры и генерирует отчеты с соответствующими решениями для создания отчетов, с помощью которых они были созданы. В случае с отчетами SSRS консольное приложение создает отчеты SSRS и экспортирует их как PDFs через веб-службу SSRS API.
До сих пор с SSRS было гораздо проще иметь дело, чем с Crystal, за исключением определенного отчета на 25 000 страниц, который мы недавно преобразовали из crystal reports в SSRS. Сервер SSRS - это 64-битный сервер 2003 года с 32 гигабайтами ram под управлением SSRS 2005. Все наши небольшие отчеты работают фантастически, но у нас есть проблемы с нашими большими отчетами, такими как этот. К сожалению, мы не можем сгенерировать вышеупомянутый отчет через веб-сервис API. Следующая ошибка возникает примерно через 30-35 минуты после generation/export:
Сообщение об исключении: базовое соединение было закрыто: произошла непредвиденная ошибка при получении.
Вызов веб-службы-это то, что, я уверен, вы все уже видели раньше:
data = rs.Render(this.ReportPath, this.ExportFormat, null, deviceInfo,
selectedParameters, null, null, out encoding, out mimeType, out usedParameters,
out warnings, out streamIds);
Странно то, что этот отчет будет run/render/export, если отчет запускается непосредственно на сервере отчетов с помощью диспетчера отчетов. Процесс, который создает данные для отчета, выполняется в течение примерно 5 минут. Отчет отображается в собственном формате SSRS в браузере / средстве просмотра примерно через 12 минут. Экспорт в pdf через браузер / средство просмотра в диспетчере отчетов занимает дополнительно 55 минут. Это работает надежно, и он производит колоссальный 1.03gb pdf.
Вот некоторые из наиболее очевидных вещей, которые я пытался сделать, чтобы отчет работал через веб-службу API:
- установите HttpRuntime ExecutionTimeout значение до 3 часов на отчет сервер
- отключен http сохранить активность на сервере отчетов
- увеличено время ожидания скрипта на сервере отчетов
- установите для отчета значение никогда не терять время ожидания на сервере
- установите тайм-аут отчета на несколько часов при вызове клиента
Из тех настроек, которые я пробовал, мне довольно удобно говорить, что любые проблемы с таймаутом были устранены.
Основываясь на моем исследовании сообщения об ошибке, я считаю, что веб-служба API не отправляет фрагментированные ответы по умолчанию. Это означает, что он пытается отправить все 1.3gb по проводу в одном ответе. В какой-то момент IIS бросает полотенце. К сожалению, API абстрагирует конфигурацию веб-службы, поэтому я не могу найти способ включить блокировку ответов.
- Кто-нибудь знает, как уменьшить/оптимизировать фазу экспорта PDF и / или размер PDF без снижения общего количества страниц?
- Есть ли способ включить блокировку ответа для SSRS?
- Есть ли у кого-нибудь еще какие-то другие теории относительно того, почему это работает на сервере, но не через API?
EDIT: прочитав сообщение kcrumley, я начал смотреть на средний размер страницы, принимая размер файла / количество страниц. Интересно, что на небольших отчетах математика работает так, что каждая страница составляет примерно 5K. интересно, что когда отчет становится больше, это "average" увеличивается. Отчет на 8000 страниц, например, усредняется по 40K/page. очень странно. Я также добавлю, что количество записей на странице устанавливается за исключением последней страницы в каждой группе, поэтому это не тот случай, когда некоторые страницы имеют больше записей, чем другие.
- Кто-нибудь знает о том, чтобы так или иначе ...
сокращение / оптимизация фазы экспорта PDF
и или размер PDF без
снижение общего количества страниц?
- Кто-нибудь знает о том, чтобы так или иначе ... сокращение / оптимизация фазы экспорта PDF и или размер PDF без снижение общего количества страниц?
У меня есть несколько идей и вопросов:
1. Это что, очень тяжелый отчет? Если нет, то есть ли у вас таблицы, которые начинаются как текст, но преобразуются в графическое изображение с помощью средства визуализации SSRS PDF (проверьте, можно ли выбрать текст в PDF)? 41K на страницу может быть больше, чем должно быть, или нет, в зависимости от того, насколько информативен ваш отчет. Но у нас были случаи, когда мы имели незначительные проблемы с макетом отчета, например, когда таблица кровоточила на полях страницы, что привело к тому, что SSRS PDF renderer "throwing up its hands" и визуализация таблицы в виде изображения вместо текста. Очевидно, что чем меньше графики в вашем отчете, тем меньше будет размер вашего файла.
2. Есть ли способ, которым вы могли бы легко разбить отчет на части? E.g., если это отчет о местоположении 10, где за местоположением 1 следует местоположение 2 и т. д. на ваш окончательный отчет, вы сможете выполнить расположении 1 часть независимого места 2 части и т. д.? Если это так, то вы можете объединить 10 подотчетов в один окончательный PDF с помощью PDFSharp после того, как получите их все. Это приводит к некоторым трудностям с нумерацией страниц, но ничего непреодолимого.
3. Есть ли у кого-нибудь еще другие теории относительно того, почему это работает на сервер, но не через API?
Я предполагаю, что это был бы чистый размер отчета. Я не помню всего о том, что такое параметр IIS и что такое SSRS, но могут быть некоторые общие параметры IIS (возможно, в Metabase.xml), которые вам придется обновить, чтобы даже позволить пройти через этот объем данных.
Вы можете изолировать вопрос о том, является ли время проблемой, взяв один из ваших рабочих отчетов и построив в течение длительного времени ожидания в ваших хранимых процедурах с WAITFOR (предполагая, что SQL сервер для вашего DBMS).
Не решения как таковые, а идеи. Надеюсь, это поможет.
Мы сузили большой экспорт PDF с SSRS и нашли 2 главных виновника
1) Если изображения не являются JPG или PNG цветовым типом 3, они расширяются до BMP см. здесь
2) Если вы не настроите SSRS вести себя иначе (не рекомендуется), то SSRS будет вставлять шрифты или подмножества шрифтов в PDF, если они не являются одним из 5 'standard' PDF шрифтов .
Хотя ни один из стандартных шрифтов (кроме символа, я думаю) не установлен на большинстве Windows OS из коробки, мы обнаружили, что если вы используете Times New Roman, Courier New, or Arial , то прямая и обратная замена шрифтов будет иметь место.
Самый простой способ конвертировать ваши RDL-е-это просмотреть их как XML и найти и заменить теги FontFamily .
Если вам придется использовать нестандартный шрифт, то, тем не менее, вы можете минимизировать ущерб:
- Используйте как можно меньше шрифтов. Поиск по RDL XML, чтобы убедиться, что нет никаких избыточных шрифтов.
- Используйте шрифты TTF, если вы используете разные размеры шрифта.
- Старайтесь не смешивать обычный, полужирный и курсивный варианты шрифта, иначе он будет вставлен несколько раз.