Могу ли я управлять версией новых отчетов SSDT в Visual Studio?
Я использую надстройку Visual Studio SSDT BI для создания отчетов для служб отчетов SQL Server. Созданный мной проект настроен на таргетинг на версии SQL Server 2008/2012/2014, поскольку это целевые серверы SQL, которые есть у наших клиентов.
Однако файлы отчетов, создаваемые в Visual Studio, как представляется, предназначены для SQL Server 2016. Если я скопирую файлы rdl
на другой сервер и загружу их через браузер, мне сказали, что они из более новой версии SSRS и не могут быть загружены.
Проблема заключается в двоичном:
-
Тег <Report>
содержит новое пространство имен 2016, которое заменяет 2010, существовавшее в предыдущих версиях:
<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/2016/01/reportdefinition">
-
Новый формат файла включает раздел макета параметров, который определен в пространстве имен 2016, но не в 2010 году:
<ReportParametersLayout>
.
.
.
</ReportParametersLayout>
Если я изменил пространство имен на 2010
и удалю раздел ReportParametersLayout
, отчет отлично работает в SQL 2012, но Visual Studio вернет его при следующем открытии отчета.
(Интересно, что если я развертываю отчеты непосредственно из VS, я получаю предупреждение о том, что макет параметра не поддерживается в 2012 году и удаляется, что подразумевает, что Visual Studio исправляет определения отчетов на лету.)
Есть ли способ заставить VS оставить файлы отчетов в формате предыдущих версий?
Ответы
Ответ 1
Это по дизайну.
См. https://connect.microsoft.com/SQLServer/Feedback/Details/2103422
Отправленный Риккардо [MSFT] 12/18/2015 в 17:07
По дизайну TargetServerVersion влияет на выходные файлы сборки, а не на исходные файлы. Вы устанавливаете выходные файлы сборки (которые вы можете захватить из папки \bin\Debug или\bin\Release в своем проекте), а не исходные файлы.
Ответ 2
Имел ту же проблему, используя SSDT версии 14.0.60305.0.
1) Я смог изменить атрибут пространства имен xmls в теге <report>
каждого из моих отчетов в соответствии с целевой средой. Ссылка https://msdn.microsoft.com/en-us/library/cc627465.aspx о том, как определить версию RDL-схемы целевого сервера.
2) Я изменил TargetServerVersion на страницах свойств проекта на "SQL Server 2008 R2, 2012 или 2014". Ссылка http://www.sqlskills.com/blogs/tim/issue-publishing-to-ssrs-2012-with-ssdt-2015/, чтобы увидеть, как открыть страницу свойств проекта.
НТН