Определение отчета имеет недопустимое целевое пространство имен rsInvalidReportDefinition

Я создал ReportProject с инструментами данных Visual Studio 2015. Когда я создаю файл report.rdl с помощью мастера отчетов, файл rdl имеет схему для 2016. Мой сервер отчетов имеет версию 12.0.4213.0.

Как я могу создать report.rdl, который совместим с моим сервером отчетов. Я попытался изменить TargetServerVersion, щелкнув правой кнопкой мыши по объекту project → и изменив targeterverversion на "Sql server 2008 R2, 2012 или 2014". Но это тоже не работает.

Ответ 1

Изменить. Конкретная версия отчета, заданная вами в качестве свойства 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 года.

Если кто-нибудь найдет способ исправить это поведение, сообщите нам. Спасибо!

Ответ 2

Вы можете получать отчеты в нескольких разных форматах из Visual Studio с помощью следующих шагов:

  • В Страницы свойств проекта установите TargetServerVersion в нужный формат (в данном случае SQL Server 2008 R2, 2012 or 2014)
  • Постройте проект
  • Найдите rdl в нужном формате в выходной папке сборки (также в Project Property Pages также: Build => OutputPath)

Ответ 3

Я написал простой PowerShell script, который следует идеям принятого ответа.

$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"

Отредактируйте первую строку, соответствующую вашему входному файлу и последней строке, сохраните ее как something.ps, запустите ее и загрузите новый файл.

Ответ 4

Попробуйте этот шаг, который я нашел по этой ссылке, и работал у меня: Ошибка при отправке отчета

  • Используя SSDT в 2016 году, установите целевую версию SQL Server для SQL Server 2008 R2, 2012 или 2014.
  • Очистите решение
  • Восстановить решение
  • Скопируйте содержимое папки Bin\debug и замените содержимое основной папки на него (убедитесь, что у вас есть резервная копия)
  • SSRS 2010 должен отображать ваш проект

Ответ 5

Замените вторую строку кода отчета с 2016 годом следующим образом:

<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.

Ответ 6

В моем случае, когда я добавил параметры в RDLC Design, система выдает исключение во время выполнения, что определение отчета имеет недопустимое целевое пространство имен. Я только что удалил средство просмотра отчетов Microsot v 12.0 и установил Microsoft.ReportingServices.ReportViewerControl. Сообщает из nugetpackages версии 15, в то время как последняя версия Atfer, устанавливающая мою проблему, решена. Потребовалась целая ночь, чтобы выяснить это. Проблема произошла, потому что у меня VS 17, и я использовал более старую версию программы просмотра отчетов.