设为首页 收藏本站
查看: 1132|回复: 0

[经验分享] 使用SQL2012报表生成器自定义IT资产报表

[复制链接]

尚未签到

发表于 2018-6-12 06:58:14 | 显示全部楼层 |阅读模式
  本文将介绍如何通过SQL Server 2012 SP1的报表生成器自定义报表,为了更贴近实战,本文将自定义一张IT资产报表。

  

  一、部署IT资产管理系统
  1、本文使用微软SCCM2012R2(System Center Configuration Manager 2012 R2)作为IT资产管理系统,用来收集客户端的硬件信息。具体的部署过程因不是本文重点故略过,网上也有很多关于SCCM安装部署的资料,感兴趣的话可以自行查阅。不过需要注意的是在安装SQL Server 2012SP1时,必须安装报表功能组件。
  

  2、部署环境如下:
DSC0000.png

  3、部署好SCCM后,给SCCM-DC和SCCM服务器安装客户端代理。
DSC0001.png

  

  4、启用SCCM的硬件清单收集功能,成功收集了SCCM、SCCM-DC两台服务器的硬件信息,这些信息都写入在SCCM的数据库中,我们的IT资产报表就是基于数据库中的这些硬件信息数据来进行定制开发。
DSC0002.png

DSC0003.png

  

  二、调试IT资产报表的SQL查询语句
  本文原始出处:江健龙的技术博客http://jiangjianlong.blog.51cto.com/3735273/1867368
  1、SCCM的数据库中,每个客户端都会被分配一个ResourceID(即资源ID),不同的硬件信息写入不同的表中,每张表都会有ResourceID字段来标识是谁的硬件信息,因此通过资源ID可以进行多表连接查询,将我们所要的全部字段显示在一张报表中。SCCM的数据库默认定义了一些视图,本文的SQL查询语句其实是通过查询视图来完成。下图的SQL语句就是通过视图v_R_System查询到资源ID和计算机名的信息。
DSC0004.png

  

  2、下图的SQL语句是通过视图V_GS_NETWORK_ADAPTER_CONFIGUR查询到资源ID、IP地址和MAC地址的信息。用了for XML path函数是为了合并多行为一行,因为有些客户端计算机拥有多个IP地址,在SCCM数据库的表中是作为多行显示的,该函数可以将多行合并在一行显示,因此还用了+‘,’就是为了在多个IP地址间加一个逗号做间隔。
DSC0005.png

  

  3、以上我们在两个视图中分别查询出了不同的硬件信息,共同点是都具有资源ID字段,那么我们就可以使用left join语句,将两个视图进行左外连接查询,效果如下图所示。因为我们是以查出计算机名的表为左表,需以该表为基准,哪怕某些硬件信息为空,也要显示空白,因此需要使用左外连接。通过left join可以很方便地进行模块化操作,将查询不同硬件信息的SQL语句不断连接进来。
DSC0006.png

  

  4、下图就是我最终完成的SQL语句,查询出所有要自定义的字段,作为下文IT资产报表的基础。其实一个SQL查询语句的编写是需要不断修改和调试的,并在不同的部署环境中得到应用才能检验出bug所在,比如上文的for XML path函数,如果只是在客户端都只有1个IP的简单环境中调试时,由于根本不需要进行多行合并,也就不会去使用这个函数,但一旦出现一个客户端具有多个IP的情况时,就会发现bug出现了,需要再修改调试,不断改进和完善。
DSC0007.png

  

DSC0008.png

  

DSC0009.png

  

  5、因具体的SQL语句编写不是本文重点故略过,但我也把主要的硬件信息位于哪些视图给归纳了一下,仅供参考。
DSC00010.png

  三、自定义IT资产报表
  本文原始出处:江健龙的技术博客http://jiangjianlong.blog.51cto.com/3735273/1867368
  1、完成了SQL语句的编写调试后,我们就可以来创建自定义报表了。使用浏览器输入报表服务器(SQL Server Reporting Services)的URL:sccm.long.me/Reports,登录后点击报表生成器。
DSC00011.png

  

  2、点击运行程序。 DSC00012.png
  

  3、在启动报表生成器后,选择新建一个空白报表。

DSC00013.png

  

  4、添加数据源,选择“使用嵌在我的报表中的连接”,选择连接类型为“Microsoft SQL Server“,连接字符串输入Data Source=.;Initial Catalog=CM_001,也可以点生成通过图形界面生成连接字符串,最后点击测试连接,可以看到已成功地创建连接。
DSC00014.png

  

  5、添加数据集,数据源选择上文创建的数据源,在查询处将我们在前文调试好的SQL语句粘贴进来,马上就能派上用场了。
DSC00015.png

  

  6、添加完数据集后可以看到字段都被识别出来了,这时我们再创建表,点击插入——表——表向导。
DSC00016.png

  

  7、在表向导中,选择数据集默认就行了,因为我们在上文也就创建了一个数据集,直接Next。
DSC00017.png

  

  8、将资源ID拖到行组,再将剩下的全部字段拖到值。
DSC00018.png

  

  9、将显示小计和总计、展开/折叠组的复选框去掉勾选。
DSC00019.png

  

  10、选择自己喜欢的样式,然后点Finish,完成表的创建。
DSC00020.png

  

  11、这样我们的IT资产报表就基本完成了。
DSC00021.png

  

  12、当然,我们可以添加标题、插入图片、调整单元格的宽度、居中显示等进行自定义和美化,把位于页脚的[&ExecutionTime](自动生成时间)拖到表内,就可以在导出报表时一起导出。
DSC00022.png

  13、最后点击左上角的运行,你将看到我们自定义的IT资产报表的运行效果。
DSC00023.png

  

  14、最后别忘了保存,默认是保存到报表服务器上。
DSC00024.png

  

  15、登录报表服务器,可以看到我们的IT资产报表,点击它,将可以看到在浏览器中的运行效果,如果页面显示不太正常,可以开启浏览器的兼容视图模式。
DSC00025.png

DSC00026.png

  

  16、我们可以将该报表导出,比如导出为Excel文件。
DSC00027.png

DSC00028.png

  

  17、导出后使用WPS或Excel打开,内容跟在浏览器中显示的一样。
DSC00029.png

  

  至此我们的IT资产报表就完成了,只要数据库中有相应的数据,编写好SQL查询语句,使用SQL Server 2012的报表生成器就可以自定义我们想要的任何报表了,并且报表可以在浏览器中访问运行,也可以导出成报表文件,非常实用。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-522432-1-1.html 上篇帖子: 初窥Windows Server Container 下篇帖子: SCOM 2012系列⑪单台服务器性能图监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表