备份SSAS模型TMSL脚本元数据工具,多给自己一点后悔药可吃。

笔者在2019年分享过自己写的一个小工具,用于备份Sqlserver数据库的元数据。近期在一个PowerBI项目中,发现很有必要也备份下SSAS分析模型的元数据,防止不小心服务器坏了或使用Tabular Editor连接数据库方式开发过程中,不小心覆盖了有用的信息,无法挽回,特别是存在多人开发的场景特别容易出状况。故再次开发了一个小工具,用于SSAS的数据库元数据备份。

工具下载地址:https://easyshu.lanzoub.com/b00w39nzi 密码:2uup
点击阅读原文可跳转到下载链接.
 
SSAS元数据备份原理
使用过Tabular Editor开发的朋友们,想必也更深刻地理解PowerBI建模层的原理,其实就是一段json的字符串,用于定义整个模型的连接、关系、表、度量值、计算列等元数据,只要拿到这段json,就可以通过XMLA查询的方式,直接部署到Sqlserver的SSAS分析服务上。
 
而bim文件,就是存储这些json信息的文件,通过Tabular Editor直接读取bim文件,就可以把整个模型的信息读进Tabular Editor,然后经过它部署到SSAS服务器上。
 

备份SSAS模型TMSL脚本元数据工具,多给自己一点后悔药可吃。

 
所以对于BI项目来说,备份这个bim文件或json文件信息,比备份整个SSAS数据库来得更科学和方便快捷。
 
BackupTMSL小工具使用方式
整个工具是绿色软件,只需双击【BackupTMSL.exe】文件即可。瞬间就可以备份完成。
备份SSAS模型TMSL脚本元数据工具,多给自己一点后悔药可吃。
备份出来的文件,带上了时间戳,会自动删除30天前生成的文件。

备份SSAS模型TMSL脚本元数据工具,多给自己一点后悔药可吃。

在使用上,需要自行设置一下SSAS服务器连接信息和备份文件夹,建议在部署的服务器上运行此程序,因为若非域环境管理员的帐号,可能没有备份访问SSAS对象模型的权限。

在计划任务上,生成一个任务,定时运行此程序,就可以达到备份的效果,例如工作日时间,9点钟开始备份,每隔1小时备份一次,备份12个小时,基本可以达到防止误操作或模型损坏,丢失了SSAS的数据库元数据的目的。

备份SSAS模型TMSL脚本元数据工具,多给自己一点后悔药可吃。

以下为历史文章,备份Sqlserver元数据程序分享。
 
数据库备份听得多了,元数据备份可能较少听说,但对于数据分析来说,创建数据仓库,商业智能项目的数据源引用等,产生大量的数据库表、视图、存储过程等关键信息,这些元数据未经备份,不小心覆盖了,损失可大,很有必要对其进行备份。本篇介绍的备份方式,乃是使用dotNET自己写的一个小工具,比较简陋,有总比没有好,真正出问题时可以帮助我们挽回不少的损失。

备份原理分享

因Sqlserver数据库是一款非常完善的商业数据库,微软给它打造了SSMS客户端管理,并配置了大量的命令让我们可以轻松管理它,当然备份整个数据库的元数据,也只需界面上一个操作即可完成。

具体的操作为【生成脚本】这个命令完成。

备份SSAS模型TMSL脚本元数据工具,多给自己一点后悔药可吃。

微软一贯的作风,复杂事情简单化,让门槛足够低,你看,就是简单下一步就完事了。

备份SSAS模型TMSL脚本元数据工具,多给自己一点后悔药可吃。

备份完的这些sql语句,随时可以还原到新的数据库上,当然我们更多的是使用在某个视图、存储过程不小心改错了,重新回来找后悔药吃,看回之前写的版本。

当然如果有高手可以直接在Sqlserver上找回某个对象的过往版本,欢迎留言告之一下,让笔者也学习下。

备份SSAS模型TMSL脚本元数据工具,多给自己一点后悔药可吃。

让界面化的操作自动化起来

因为以上的操作是界面操作,总不能要求自己每天都这样操作一轮吧,然后也用不着用那些所谓的先进的RPA玩意来搞一遍。

因微软对其自身的产品是开放了API接口调用的,类似Excel里的VBA一样,可以调用这些产品的各个功能,实现自动化。

当然,Sqlserver的功能调用,使用的是SMO对象模型,也不是所有语言都支持调用,只有亲儿子dotNET语言才可以。

笔者使用dotNET简单几句代码,给大家做好了工具,直接拿去用就行了。

工具使用的是Console命令行工具的方式开发,所以使用时,可以在Sqlserver的作业上调用一下,因为是生成文件的操作,好像是有些权限限制的问题,所以最好使用计划任务的方式来调用。

工具配置

下载工具后,解压到某个文件夹里,然后程序里有个配置文件,可以根据实际情况修改下。

  • BackDbNames:备份的数据名称

  • BackupDir:备份的文件夹路径

  • DaysBeforeToDelete:备份文件存放多久,过了这个天数自动帮忙删除它。

  • SqlserverConnectString:如果是远程服务器,就抄一段连接字符串过来,如果是本机的数据库,就默认就可以,当然实例名不是默认的也要改,反正就是SqlServer的连接字符串,自己到http://www.connectionstrings.com/上抄一下就好。

备份SSAS模型TMSL脚本元数据工具,多给自己一点后悔药可吃。

作好这些配置后,就可以测试下是否生成成功,生成没问题,就用计划任务每天跑一下,万一不小心改错了,最多也就丢掉一天的活,比重头开始划算得多了。

结语

正如笔者过往写的文章里提到数据分析师最该使用的数据库是Sqlserver一样,许多的数据库复杂的操作,微软已经帮我们做好,作为分析师类的职能,没必要自己傻折腾IT领域的东西太多,一个自动化工具,自己有能力学习点编程技术,就可以几句代码调用接口做出来,完全没必要跟着潮流来选择MySQL之类的所谓热门数据库。

同样地,对于我们备份数据的环节,不是生产数据库,分析数据型使用的数据仓库,也不用太紧张数据层面的丢失,反而对经常变化的元数据如视图、存储过程等的变化多一份备份更管用。

希望本篇所讨论和分享的工具,对大家可以有所帮助,为大家备上一份后悔药。