Ошибка при загрузке отчета
Я создал отчет с использованием Visual Studio 2015 с установленными SSDT Tools по следующей ссылке
https://msdn.microsoft.com/en-us/mt186501
База данных находится на SQL Server 2014. Однако отчеты работают на моем компьютере, когда я пытаюсь загрузить отчет на компьютер клиента (на котором установлен SQL Server 2014, а не Visual Studio). Я получаю следующую ошибку
"Определение этого отчета недопустимо или не поддерживается данной версией служб Reporting Services. Возможно, определение отчета было создано в более поздней версии служб Reporting Services или содержит контент, который не является правильно сформированным или недействительным на основе схем служб Reporting Services. Подробности: Определение отчета содержит недопустимое целевое пространство имен " http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition", которое не может быть обновлено. (RsInvalidReportDefinition)"
5 ответов
Если у вас есть решение> свойства> TargetServerVersion, установленное на SQL Server 2008 R2, 2012 или 2014, а затем выгрузите RDL из папки bin вместо папки проекта, он должен работать. Я получал ту же ошибку, и это решило ее.
Это сработало для меня: получение ошибки SSRS версии 2016, необходимо отредактировать отчет rdlc. Для получения подробной информации перейдите по этой ссылке: http://eskonr.com/2018/06/configmgr-ssrs-failed-to-upload-rdl-with-error-code-definition-of-this-report-is-not-valid-or-supported-by-this-version-of-reporting-services/
Изменения:
- Поиск 2016, измените версию с 2016 на 2010.
- Выполните поиск "ReportParametersLayout" в файле и удалите весь блок (этот код создан в версии Visual Studio 2016).
Как показано выше, удалите весь блок и сохраните отчет.
Если вы используете Visual studio 2017
Обновление: 18 апреля 2017 года Microsoft выпустила документ, описывающий, как настроить и использовать средство создания отчетов в Visual Studio 2017.
В Visual Studio 2017 по умолчанию в ToolBox не установлен инструмент ReportViewer. Установка расширения Microsoft Rdlc Report Designer для Visual Studio и последующее добавление его в панель инструментов приводит к появлению невизуального компонента, который отображается под формой.
Служба поддержки Майкрософт сообщила мне, что это ошибка, но по состоянию на 21 апреля 2017 года она "работает как задумано".
Следующие шаги необходимо выполнить для каждого проекта, который требует ReportViewer.
Если у вас есть ReportViewer на панели инструментов, удалите его. Выделите, щелкните правой кнопкой мыши и удалите. Для этого вам понадобится проект с открытой формой. Если у вас установлено расширение Microsoft Rdlc Report Designer для Visual Studio, удалите его. Закройте свое решение и перезапустите Visual Studio. Это важный шаг, ошибки будут возникать, если VS не перезапускается при переключении между решениями. Откройте ваше решение. Откройте консоль диспетчера пакетов NuGet (Инструменты / Диспетчер пакетов NuGet / Консоль диспетчера пакетов). В командной строке PM> введите эту команду, случай имеет значение.
Пакет установки Microsoft.ReportingServices.ReportViewerControl.WinForms
Вы должны увидеть текст, описывающий установку пакета.
Я надеюсь, что это работает
Хотя на вопрос дан ответ, но это решение может помочь для новых посещений.
В Visual Studio выберите Инструменты -> Расширения и обновления -> Обновления -> Обновить службы отчетов.
После закрытия Visual Studio он устанавливает установщик VSiX.
Проблема была решена для меня. Надеюсь это поможет.
Я щелкнул правой кнопкой мыши на своем отчете, а затем нажал publish report1.rdlc
который работал для меня.
Я получил ответ по ссылке " https://www.sqlskills.com/blogs/tim/issue-publishing-to-ssrs-2012-with-ssdt-2015/"
Выпуск публикации в SSRS 2012 с SSDT 2015 Автор: Тим Радни Опубликовано: 22 января 2016 г. 14:58 Я недавно помогал клиенту, который пытался использовать SQL Server Data Tools 2015, для обновления и создания отчетов, которые будут развернуты в SQL. Server Reporting Services 2012. При попытке развернуть отчет клиент получит следующую ошибку:
"[RsInvalidReportDefinition] Определение этого отчета недопустимо или не поддерживается данной версией служб Reporting Services. Определение отчета может быть создано в более поздней версии служб Reporting Services или содержать контент, который не является правильно сформированным или недействительным на основе схем служб Reporting Services ".
Я знал, что SSDT 2015 должен быть обратно совместимым и иметь возможность работать с несколькими версиями продуктов SQL Server, поэтому мне пришлось провести небольшое исследование, чтобы выяснить, что именно нужно изменить, чтобы опубликовать отчет для SSRS 2012.
В своей лаборатории я создал новый проект под названием GetDatabases. Этот проект был базовым отчетом, который получал запрос к системной таблице. Первым, что я попытался изменить в проекте, был TargetServerVersion, расположенный под свойствами проекта.
Я изменил TargetServerVersion на "SQL Server 2008 R2, 2012 или 2014", по умолчанию это был "SQL Server 2016". Я также обновил TargetServerURL до моего сервера разработки под управлением SSRS 2012. Я внес эти изменения в параметры конфигурации выпуска и отладки.
После внесения этих изменений я все еще не смог развернуть отчет. После небольшого исследования я нашел место для изменения версии Business Intelligence Designer для сервера развертывания по умолчанию. Это находится в "Инструменты, а затем Параметры". По умолчанию было установлено значение 13.0. После того, как я изменил версию на 11.0 для соответствия серверу, на котором я развертывал, я смог успешно развернуть свой отчет на SSRS 2012.
Ни одно из предложенных решений у меня не сработало, при этом я правильно выставил TargetServerVersion в свойствах проекта. Обратите внимание: я не думаю, что редактирование файла.rdl вручную - это надежное решение.
У меня есть странное решение: в IDE (Visual Studio 2019 в моем случае) измените конфигурацию решения с Debug на DebugLocal. Теперь измените TargetServerVersion на любую версию, которую хотите, перестройте проект отчета и проверьте файл.rdl с помощью любого текстового редактора в папке bin\DebugLocal.
Теперь вы заметите, что пространства имен ДЕЙСТВИТЕЛЬНО реагируют на каждое изменение TargetServerVersion + rebuild.
Примечание: похоже, это работает, только если для конфигурации решения установлено значение DebugLocal, а не для отладки или выпуска!!