Вы тоже получили сообщение: «Определение данного отчета неправильное или не поддерживается данной версией служб Reporting Services. Возможно, определение отчета создано с помощью более поздней версии служб Reporting Services, имеет содержимое с неправильным форматом или является недопустимым по схеме служб Reporting Services. Подробные сведения: Определение отчета имеет недопустимое целевое пространство имен "http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition", которое невозможно обновить
»? Тогда я расскажу, что можно сделать в этой ситуации.
Чуть более подробно: У меня есть отчёт, сделанный в Visual Studio 2017. Для более ранних версий SQL серверов я использую Visual Studio 2010:
При попытке добавить отчёт из более поздней версии в проект более ранней версии он добавляется, но при попытке открыть в дизайнере также выдаёт ошибку «Определение отчета имеет недопустимое целевое пространство имен "http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition", которое невозможно обновить
»:
Неужели придётся всё заново создавать «с нуля»? К счастью, я нашел инструкцию, как отредактировать код отчёта «вручную». Правда, она оказалась не совсем точной, кое что пришлось изменить, поэтому я и решил поделиться тем, что я делал.
- Нажмём на ссылку «Изменить код».
- Найдём текст
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
- Заменим его на
<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition">
- Найдем «ReportParametersLayout» , выделим всё, что находится между
<ReportParametersLayout>
и</ReportParametersLayout>
и удалим выделенное:
- Сохраним:
- Вкладку с кодом отчёта можно закрыть, вкладку с макетом отчёта тоже.
- Откроем отчёт снова:
Ура! Сколько времени сэкономлено! 🙂
Примечание от 17.01.2023:
Получил обратную связь от коллеги. Он пишет:
Воспользовался твоей инструкцией из статьи. Для 5 отчётов сработало как есть, в одном заголовок был немного другой:
<Report MustUnderstand="df" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:df="http://schemas.microsoft.com/sqlserver/reporting/2016/01/reportdefinition/defaultfontfamily">
Заменил в нём 2016 на 2010, этого было достаточно.
Надеюсь кому-то пригодится 🙂