自动部署报表到报表服务器

简介:

 以下脚本对网上搜到的(见上篇转载文章)做了一些修改。首先,取消数据源的发布。在原脚本中将发布一个定义的数据源,然后所有报表的数据源同时指向这个发布的数据源。这在现实环境中是不现实的,所以修改后的脚本不再发布数据源。默认所有的数据源已发布到服务器指定的目录中(脚本中定义的datasourceFolderName)。另外,原脚本中只支持一张报表有一个数据源,而现实中很可能会出现一张报表联到多个数据源的情况。此时运行原脚本则所有的数据源都会被改成相同的而导致实际上报表无法正常运行。改进后的脚本允许一张报表中含有多个数据源的情况。在发布报表时会将报表中的数据源替换为数据源目录下的同名数据源。因此,在发布报表之前需要先将所有的数据源先发布到报表服务器上。

 
 

 

deploy.bat

 
 
  1. @echo off 
  2. REM configure file with the path 
  3. set config="deployReport.rss" 
  4. REM target reporting services 
  5. set server="http://dc1/reportserver" 
  6. REM report folder 
  7. set filePath="C:\\reports\\" 
  8. REM target reporting services folder 
  9. set reportsFolderName="test" 
  10. REM target data sources folder 
  11. set datasourceFolderName="Data Sources" 
  12. REM execute log 
  13. set log="C:\log.txt" 
  14.  
  15. rs -i %config%  -s %server% -v filePath=%filePath% -v reportsFolderName=%reportsFolderName% -v datasourceFolderName=%datasourceFolderName% >%log% 
  16.  
  17. rem pause 

deployReport.rss

  1. Dim definition As [Byte]() = Nothing 
  2. Dim warnings As Warning() = Nothing 
  3. Dim datasourceFolderPath As String = "/" + datasourceFolderName 
  4. Dim reportsFolderPath As String = "/" + reportsFolderName 
  5.  Public Sub Main() 
  6.     rs.Credentials = System.Net.CredentialCache.DefaultCredentials 
  7.     CreateReportFolder(reportsFolderName) 
  8.     DeployRepors(filePath) 
  9. End Sub 
  10. Public Sub CreateReportFolder(ByVal reportFolder As String
  11.     Try 
  12.         rs.CreateFolder(reportFolder,"/",Nothing
  13.         Console.WriteLine("Parent Folder Created:{0}",reportFolder) 
  14.     Catch e As Exception 
  15.         Console.WriteLine(e.Message) 
  16.     End Try
  17. End Sub
  18. Public Sub DeployRepors(ByVal filePath As String
  19.     Dim tempFileAry As String() 
  20.     Dim reportFilePath as String 
  21.     tempFileAry = Directory.GetFiles(filepath) 
  22.     For Each reportFilePath In tempFileAry 
  23.         Dim fileName As String 
  24.         fileName = reportFilePath.Substring(reportFilePath.LastIndexOf("\") + 1) 
  25.         Dim fileSuffix As String 
  26.       fileSuffix = fileName.Substring(fileName.LastIndexOf(".") + 1) 
  27.         Select Case fileSuffix 
  28.             Case "rdl" 
  29.                 PublishReport(fileName,fileSuffix) 
  30.         End Select 
  31.     Next 
  32. End Sub 
  33. Public Sub PublishReport(ByVal reportName As String,ByVal fileSuffix As String
  34.     Try 
  35.         Dim stream As FileStream = File.OpenRead(filePath + reportName) 
  36.         definition= New [Byte](stream.Length) {} 
  37.         stream.Read(definition, 0, CInt(stream.Length)) 
  38.         stream.Close() 
  39.     Catch e As IOException 
  40.         Console.WriteLine(e.Message) 
  41.     End Try
  42.     Try 
  43.       If(fileSuffix="rdl"Then 
  44.         warnings = rs.CreateReport(reportName.Substring(0,reportName.LastIndexOf(".")),reportsFolderPath, true, definition, Nothing
  45.          SetReportDataSourceRef(reportName.Substring(0,reportName.LastIndexOf("."))) 
  46.       End If 
  1.         If Not (warnings Is NothingThen 
  2.             Dim warning As Warning 
  3.             For Each warning In warnings 
  4.                 Console.WriteLine(warning.Message) 
  5.             Next warning 
  6.         Else 
  7.             Console.WriteLine("Report: {0} published successfully with no warnings", reportName) 
  8.         End If
  9.     Catch e As Exception 
  10.         Console.WriteLine(e.Message) 
  11.     End Try 
  12. End Sub 
  13. Public Sub SetReportDataSourceRef(ByVal reportName As String
  14. Try 
  15. Dim datasources As [DataSource]() = rs.GetItemDataSources(reportsFolderPath + "/" + ReportName) 
  16. dim i as integer 
  17. for i=0 to  datasources.getlength(0)-1 
  18. Dim Item1 as DataSourceReference = New DataSourceReference 
  19. Item1.Reference = "/Data Sources/"+datasources(i).name 
  20. datasources(i).Item = Item1 
  21.  next i 
  22. rs.SetItemDataSources(reportsFolderPath + "/" + ReportName, datasources) 
  23. Catch _exception As Exception 
  24.      Console.WriteLine(_exception) 
  25.  End Try 
  26. End Sub   









本文转自 boyi55 51CTO博客,原文链接:http://blog.51cto.com/boyi55/450776,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
弹性计算 数据安全/隐私保护
【阿里云服务器镜像】雾锁王国(Enshrouded)自动部署教程
本文将为您提供极简部署雾锁王国服务器的指引,「仅需轻点三次鼠标,即可完成开服」,和自己的朋友一起畅玩雾锁王国。雾锁王国(Enshrouded)作为一款热门多人在线游戏,为了给玩家提供稳定、流畅的联机体验,阿里云提供了高效便捷的快速部署解决方案,本文将为大家分享阿里云一键部署雾锁王国联机服务器详细教程。
 【阿里云服务器镜像】雾锁王国(Enshrouded)自动部署教程
|
监控 BI API
利用ZABBIX进行服务器自动巡检并导出报表
利用ZABBIX进行服务器自动巡检并导出报表
利用ZABBIX进行服务器自动巡检并导出报表
|
5月前
|
开发工具 git
服务器定时自动拉取Git仓库代码自动部署
服务器定时自动拉取Git仓库代码自动部署
125 0
|
2月前
|
弹性计算 Ubuntu Linux
【3秒极速开服】Palworld/幻兽帕鲁服务器全自动部署极简教程(新手推荐)
本文将为您提供极简部署幻兽帕鲁专属服务器(Dedicated Server)的指引,「仅需轻点三次鼠标,3秒轻松开服」,和自己的朋友一起开心“抓帕鲁”。在帕鲁的世界中,与神奇的生物共度悠闲时光是一种无与伦比的乐趣。然而,有时官方服务器的不稳定性可能会给游戏体验带来延迟和卡顿。为了告别这些问题,部署自己的幻兽帕鲁服务器成为了一个不错的选择。通过搭建专属的游戏服务器(Dedicated Server),和小伙伴们获得一个专属的服务空间,获得顺畅流畅的游戏体验。
148 0
|
2月前
|
弹性计算 Linux 数据安全/隐私保护
阿里云自动部署【幻兽帕鲁/Palworld】服务器教程,2024新版教程
阿里云自动部署【幻兽帕鲁/Palworld】服务器教程,2024新版教程,幻兽帕鲁Palworld多人游戏专用服务器一键部署教程,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云百科分享2024年新版基于阿里云搭建幻兽帕鲁服务器教程
|
2月前
|
弹性计算 Linux 数据安全/隐私保护
2024年幻兽帕鲁Palworld搭建服务器方法,全自动部署
2024年幻兽帕鲁Palworld搭建服务器方法,全自动部署教程,玩转幻兽帕鲁服务器,幻兽帕鲁Palworld多人游戏专用服务器一键部署教程,阿里云推出新手0基础一键部署幻兽帕鲁服务器教程,傻瓜式一键部署,3分钟即可成功创建一台Palworld专属服务器,成本仅需26元,阿里云百科分享2024年新版基于阿里云搭建幻兽帕鲁服务器教程
|
2月前
|
弹性计算 Ubuntu Linux
帕鲁服务器多少钱 阿里云秒级自动部署幻兽帕鲁服务器 8人玩版仅需26.52元
帕鲁服务器多少钱 阿里云秒级自动部署幻兽帕鲁服务器 8人玩版仅需26.52元。幻兽帕鲁》是最近非常火爆的一款游戏,由Pocketpair开发,是一款开放世界生存制作游戏,游戏于2024年1月18日发行抢先体验版本。游戏中,玩家可以在广阔的世界中收集神奇的生物“帕鲁”,派他们进行战斗、建造、做农活,工业生产等。阿里云推出幻兽帕鲁联机服务快速部署服务,仅需点几下鼠标,1分钟左右就能可完成搭建,全程无需手动配置参数。 其价格也非常优惠:最低仅需26.52元,4核16G 10M带宽,最多支持8个玩家。以上价格为新用户的价格,如何你不是新用户,没有其他途径享受新用户福利,可以选择按量付费。
569 0
|
7月前
|
Web App开发 前端开发 JavaScript
在 SAPGUI 里使用 ABAP 报表上传 SAP UI5 应用到 ABAP 服务器试读版
在 SAPGUI 里使用 ABAP 报表上传 SAP UI5 应用到 ABAP 服务器试读版
353 0
|
PHP
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
397 0
github与gitee代码自动同步到服务器实现PHP项目自动部署webhooks
|
运维 监控 Linux
【实测】用土话让你明白如何做测试平台的持续部署和集成 - 3【上传gitlab后自动部署到服务器】
【实测】用土话让你明白如何做测试平台的持续部署和集成 - 3【上传gitlab后自动部署到服务器】
【实测】用土话让你明白如何做测试平台的持续部署和集成 - 3【上传gitlab后自动部署到服务器】

热门文章

最新文章