Определение отчета имеет недопустимое целевое пространство имен rsInvalidReportDefinition
Я создал ReportProject с помощью инструментов данных Visual Studio 2015. Когда я создаю файл report.rdl с помощью мастера отчетов, файл rdl имеет схему на 2016 год. Мой сервер отчетов имеет версию 12.0.4213.0.
Как я могу создать report.rdl, который совместим с моим сервером отчетов. Я попытался изменить TargetServerVersion, щелкнув правой кнопкой мыши проект -> свойства и изменив целевой сервер на "Sql server 2008 R2, 2012 или 2014". Но это тоже не работает.
7 ответов
Изменить: конкретная версия отчета, которую вы указали в качестве TargetServerVersion
свойство создается в папке BIN (\debug или везде, где вы создаете), если вы не используете какие-либо функции 2016 года.
Я пытаюсь найти тот же ответ. Можно подумать, что просто установив TargetServerVersion решения так, как вы это сделаете, вы заставите его использовать правильное определение отчета (или при желании они могут дать вам возможность добавить элемент отчета до 2016 г.)
До этого, если вы щелкните правой кнопкой мыши на.rdl и "просмотрите код", вы можете изменить следующие строки, чтобы он работал в SQL 2014 - просто сделайте резервную копию вашего исходного.rdl на случай, если вы допустите ошибку:
1) Замените строку отчета xmlns следующим текстом:
<Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
2) Удалите строки ReportSections и ReportSection, оставив метку тела дочерней древовидной структуры и т. Д. Ниже). Так что удалите это:
<ReportSections>
<ReportSection>
и эти...
</ReportSection>
</ReportSections>
3) Удалите весь раздел ReportParametersLayout. Так (например) удалите это:
<ReportParametersLayout>
<GridLayoutDefinition>
<NumberOfColumns>4</NumberOfColumns>
<NumberOfRows>2</NumberOfRows>
</GridLayoutDefinition>
</ReportParametersLayout>
Нажмите "Сохранить", вернитесь в дизайн и запустите отчет. Если вы не изменили дизайн, он будет работать в SQL2014. В ту минуту, когда вы измените все поля, он вернется к схеме 2016 года.
Если кто-нибудь найдет способ исправить это, сообщите нам. Спасибо!
Вы можете получить отчеты в нескольких различных форматах версий из Visual Studio, выполнив следующие действия:
- На странице свойств проекта установите
TargetServerVersion
в нужный формат (в этом случаеSQL Server 2008 R2, 2012 or 2014
) - Постройте проект
- Найдите rdl в нужном формате в выходной папке сборки (указанной также на страницах свойств проекта:
Build => OutputPath
)
Я написал простой скрипт PowerShell, который следует идеям принятого ответа.
$file = (Get-Content "InputFileNameHere.rdl")
# Unwraps the Body and the Page element.
# Simple string replacement
$file = $file -replace '<ReportSections>',""
$file = $file -replace '<ReportSection>',""
$file = $file -replace '</ReportSection>',""
$file = $file -replace '</ReportSections>',""
# Parse the XML doc
$xml = [xml]$file;
# Set the XML namespace
$xml.Report.xmlns = "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition";
# Delete ReportParametersLayout node
$xml.Report.RemoveChild($xml.Report.ReportParametersLayout);
# Save the file
Set-Content -Value $xml.OuterXml -Path "OutputFilenameHere.rdl"
Отредактируйте первую строку, чтобы она соответствовала вашему входному файлу, и последнюю строку, сохраните ее как нечто.ps, запустите и загрузите новый файл.
В моем случае, когда я добавил параметры в RDLC Design, система выдает исключение во время выполнения, что определение отчета имеет недопустимое целевое пространство имен. Я только что удалил средство просмотра отчетов Microsot v 12.0 и установил Microsoft.ReportingServices.ReportViewerControl.Winforms из nugetpackages версии 15, в то время последняя версия Atfer, устанавливающая мою проблему, решена. Потребовалась целая ночь, чтобы выяснить. Проблема возникла из-за того, что у меня VS 17 и я использовал старую версию средства просмотра отчетов.
Попробуйте этот шаг, который я нашел по этой ссылке и работал для меня: Ошибка при загрузке отчета
- Используя SSDT в 2016 году, установите в качестве целевой версии SQL Server SQL Server 2008 R2, 2012 или 2014
- Чистый раствор
- Восстановить решение
- Скопируйте содержимое вашей папки Bin\debug и замените на нее содержимое главной папки (убедитесь, что у вас есть резервная копия)
- SSRS 2010 должен сделать ваш проект
Замените вторую строку кода отчета с 2016 в нем следующим: HTML не будет публиковаться правильно, поэтому <и> в начале и в конце необходимо вернуть обратно.
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
раздел и удалить его. Хит минус, чтобы показать одну строку и щелкните правой кнопкой мыши и вырезать.
Выше исправлено четыре отчета, преобразованных из Crystal в версию 16, когда я должен был выбрать версию 10.