This is the slidedeck of the presentation delivered to the Belgian SQL user group at 29th January of 2013. It's about automating SSRS deployments using MSBUILD.
4. INTRODUCTION
SSIS & SSAS both have (somewhat) easy methods to automate
deployments
- DTUTIL
- XMLA
... but what about SSRS?
- Visual Studio (not automated)
- RS.exe with VBScripts
hard to generate yourself and no built-in tool
RSScripter fills this gap
- but has some shortcomings
- MSBuild (open source)
has a learning curve
4
6. WHAT IS MSBUILD?
platform for building applications
- typically used in conjunction with Visual Studio
- project file (XML) controls how MSBuild processes and builds software
ItemGroup
- input of the build process
- typically refers to source files
Task
- unit of executable code used to perform build operations
Target
- groups tasks together
Properties
- key/value pairs configuring the build
6
7. WHAT IS MSBUILD?
requires
- .NET framework
- Visual Studio is not required to run MSBuild
sample (source: Walkthrough: Creating an MSBuild Project File from Scratch)
7
8. WHAT IS MSBUILD?
how do we use this to deploy our SSRS projects?
- SQL Server Reporting Services MSBuild Tasks
C# open source project on Codeplex by Steven Wright (blog | twitter)
tasks specify how SSRS objects are deployed to a server
- uses the SSRS webservice in the background
- tasks are available for
SSRS 2008 - Native mode
SSRS 2008 - Integrated mode
SSRS 2008R2
8
10. AUTOMATE YOUR DEPLOYMENT
solution consists of the following objects
- folder with objects to be deployed
reports & shared data sets
- bin folder with ssrsmsbuildtasks.dll
contains actual code
- ssrsmsbuildtasks.R2.tasks in home folder
maps tasks to the assembly containing the task implementation
- MSBuild project file
specifies what to deploy and in what order
- batch file to start the build process
schedule this to automate your deployment
10
12. AUTOMATE YOUR DEPLOYMENT
breakdown of the MSBuild project file
- project element (required) (line 1)
specifies optional targets
imports build tasks
- import element (line 3)
imports content from one project file into another
in this solution, tasks are defined in assembly, not in project file itself
12
13. AUTOMATE YOUR DEPLOYMENT
PropertyGroups
- ReportServer: defines URL and folders (lines 6-12)
- Target Dependencies (lines 60-71)
other targets
13
14. AUTOMATE YOUR DEPLOYMENT
ItemGroups
- Reports and DataSets (lines 15-38)
set properties wildcard
object path
14
15. AUTOMATE YOUR DEPLOYMENT
ItemGroups
- Data Sources (lines 41-58)
needs to be fully specified in project file (no object to import)
name of the data source
SQL Server
SSAS
15
16. AUTOMATE YOUR DEPLOYMENT
Targets/Tasks (lines 76-112)
- GetFullServerURL: uses GetFullURL to find the URL of the webservice
- DeleteFolders: uses ReportfolderExists & DeleteReportfolder
- CreateReportingFolders: uses CreateReportFolder
16
17. AUTOMATE YOUR DEPLOYMENT
Targets/Tasks
- CreateConnectionSources: uses CreateReportingDataSource to create
shared data sets
- CreateShareDataSet: uses AddShareDataSets to deploy shared data sets
- DeployReports: uses AddReports
17
18. AUTOMATE YOUR DEPLOYMENT
Targets/Tasks
- SetReportDataSet: uses SetReportDataSet to link reports with shared data
sets
- SetReportsDataSource: uses SetReportDataSource to link reports with
shared data sources
18
20. TIPS&TRICKS
possible to exclude items
specify aliases for datasets
- not possible for data sources
20
21. TIPS&TRICKS
specify folder properties
specify authentication
single report deployment?
- every data source and dataset has to be redeployed!
21
22. TIPS&TRICKS
other objects can be deployed as well
- subscriptions
data and e-mail/file
- schedules
out of scope for this session
check out the sample from codeplex
22
24. CONCLUSION
MSBuild uses open source SSRSMSBuildTasks
- download from Codeplex
can deploy all SSRS 2008R2 objects
allows for automatic deployment
has a learning curve
has some disadvantages
- difficult iterative deployments
- lots of unnecessary warnings
- hard to debug
24