Службы Reporting Services 2008R2 выдают «ошибка собственного компилятора [BC30494] Слишком длинная строка». - PullRequest
1 голос
/ 30 ноября 2011
An unexpected error occurred while compiling expressions. Native compiler return value: '[BC30494] Line is too long.'.

Когда RS выдает эту ошибку, типичный сценарий выглядит так: слишком много текстовых полей в определенной области данных; и, кажется, единственной известной мерой является «минимизация» имен текстовых полей (т. е. переименование TextBox345 в T345).

Мой отчет не , что большой (<100 текстовых полей); но я широко использую функцию Lookup () для установки многих свойств стиля текстового поля из набора данных стилей (> 2500 вызовов Lookup ()).

Так что я предполагаю, что выделенный код VB, который генерируется для функции Lookup (), довольно многословен и поэтому нарушает ограничение в 64 КБ для сгенерированного блока кода VB на область данных.

  1. Могу ли я проверить свою гипотезу? То есть. Есть ли способ я могу проверить сгенерированный код VB?

  2. Какие-либо предложения относительно того, как решить / избежать этой проблемы? Само собой разумеется, что использование сокращенных имен в моем случае не сократило его.

1 Ответ

0 голосов
/ 17 марта 2015

Довольно задержанный ответ, но ради потомков:

  1. Исходный файл .vb сгенерированного кода временно находится на диске в каталоге C:\Users\{RS Service Account Name}\AppData\Local\Temp.Как вы упомянули, если какая-либо строка превышает 65535 символов, компиляция не будет выполнена из-за ограничения VB

  2. Эта проблема была только что исправлена ​​в Reporting Services 2012 SP2 CU5;статья KB находится здесь .К сожалению, основная поддержка SQL 2008 R2 закончилась , поэтому исправление вряд ли будет перенесено обратно.Что касается обходных путей:

    • Сократите имена текстовых полей до максимально возможного минимума (например, используйте все возможные имена одного символа, затем все возможные имена двух символов)
    • Попробуйте использовать подотчеты для разделениявверх по отчету
    • Попробуйте переработать запрос к набору данных, чтобы сократить вызовы Lookup ()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...