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

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

Как создать файл report.rdl, совместимый с моим сервером отчетов. Я попытался изменить TargetServerVersion, щелкнув правой кнопкой мыши проект -> свойства и изменив targetserverversion на «Sql server 2008 R2, 2012 или 2014». Но и это не работает.


person Anirudhan J    schedule 28.03.2016    source источник


Ответы (6)


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

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

person tb1    schedule 31.05.2016
comment
Благодарю вас! Вы волшебник. Это сбивало нас с толку уже некоторое время. - person BossWalrus; 25.03.2017
comment
Когда вы создаете отчет, он помещает правильную версию xml, которую вы настроили (в свойстве TargetServerVersion), в папку \bin. Это тот файл, который вам нужно загрузить на свой сервер (НЕ файл, который вы редактируете), и пространства имен и функциональность будут в порядке. (примечание: файл в каталоге \bin — это rdl, который развертывается, когда вы используете [Развертывание правой кнопкой мыши]) - person Trubs; 26.09.2018
comment
Геройское решение. Спасибо. - person Hemant Ramphul; 25.05.2020

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

  1. На страницах свойств проекта установите TargetServerVersion в желаемый формат (в данном случае SQL Server 2008 R2, 2012 or 2014)
  2. Построить проект
  3. Найдите rdl в нужном формате в выходной папке сборки (также указано на страницах свойств проекта: Build => OutputPath)
person Philip Bijker    schedule 11.07.2016
comment
это правильный ответ, я всегда собирал rdl в корневой папке проекта, но именно тот, который находится на выходе, получает правильное пространство имен / версию для моего сервера! ваше здоровье! - person Alex; 04.03.2020

Я написал простой сценарий 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"

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

person lsu    schedule 17.03.2018
comment
Спасибо, это полезно. Это также работает для файлов RDLC, таких как то, что я использую. Рекомендую прописать путь к файлу в переменную и запускать из скрипта как файл PS1: $path = "$PSScriptRoot\Invoice.rdlc" $file = (Get-Content $path) - person robbpriestley; 14.07.2018

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

  1. Используя SSDT в 2016 году, установите целевую версию SQL на SQL Server 2008 R2, 2012 или 2014.
  2. Очистите раствор
  3. Перестроить решение
  4. Скопируйте содержимое папки Bin\debug и замените им содержимое основной папки (обязательно сделайте резервную копию)
  5. SSRS 2010 должен отображать ваш проект
person Oluwabori Olaleye    schedule 24.02.2017
comment
Вы абсолютный гений, большое спасибо, вы спасли меня от стресса! - person Eddy Jawed; 10.08.2020

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

person Awais Asghar    schedule 12.07.2019

Замените вторую строку кода отчета, в которой есть 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.

person Michael Conroy    schedule 18.05.2017