[工具分享]备份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服务器上。

39816d8cb94a21c398f64a7787b89689.png

所以对于BI项目来说,备份这个bim文件或json文件信息,比备份整个SSAS数据库来得更科学和方便快捷。

BackupTMSL小工具使用方式

整个工具是绿色软件,只需双击【BackupTMSL.exe】文件即可。瞬间就可以备份完成。

d854656966dd941f181dc05ec802140e.png

备份出来的文件,带上了时间戳,会自动删除30天前生成的文件。

76541ce69394d4fe459541b3dbf2a91b.png

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

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

6a90f6cb477736b6cce9e72916d6f34c.png

以下为历史文章,备份Sqlserver元数据程序分享。

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

备份原理分享

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

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

0563821430d22e4c304e4c290b965728.jpeg

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

3f7cb171c03927bc10bb77615f80da7c.jpeg

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

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

ca46c59765ee1cd436f54ce5f80249a8.jpeg

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

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

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

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

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

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

工具配置

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

  • BackDbNames:备份的数据名称

  • BackupDir:备份的文件夹路径

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

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

a865e63d4478b65dec5eb55a7cb31988.jpeg

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

结语

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UVA - 11181 数学

UVA - 11181 题意: n个人去买东西,其中第i个人买东西的概率是p[i],最后只有r个人买了东西,求每个人实际买了东西的概率 代码: //在r个人买东西的概率下每个人买了东西的概率,这是条件概率,因为最多20个人可…

js时间戳转成日期格式

//第一种2 function getLocalTime(nS) { 3 return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/, ); 4 } 5 alert(getLocalTime(1293072805));6 //结果是2010年12月23日 10:537 //第二种 8 function getLocalTime(nS) { 9 r…

计算机桌面去方格子,win7桌面office图标变成白色方格图标的原因和解法

win7系统开机发现桌面上所有office图标变成白色方格图标,其他程序图标都正常显示,是怎么回事呢?出现这样的情况,一般是由于文件图标缓存错误或者丢失导致,找打原因后该如何解决问题?可以通过记事本来解决此…

JS获取元素的offsetTop,offsetLeft等相关属性

1. obj.clientWidth //获取元素的宽度 obj.clientHeight //元素的高度 obj.offsetLeft //元素相对于父元素的left obj.offsetTop //元素相对于父元素的top obj.offsetWidth //元素的宽度 obj.offsetHeight //元素的高度 区别: clientWidth width padding clientHe…

vi/vim 三种模式及命令 (简单粗暴,轻松搞懂)

//一般模式(默认模式) 一般模式: 移动光标 h 或 向左方向键 光标向左移动一个字符 j 或 向下方向键 光标向下移动一个字符 k 或 向上方向键 光标向上移动一个字符 l 或 向右方向键 光标向右移动一个字符 [Ctrl] [f] 屏幕『向前』移动一页(常用) [Ct…

Kong入门学习实践(1)基础概念快览

【API网关】| 总结/Edison Zhou最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看。由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版。什么是Kong&am…

条件锁

ReentrantLock类有一个方法newCondition用来生成这个锁对象的一个条件(ConditionObject)对象,它实现了Condition接口。Condition提供了线程通讯的一套机制await和signal等线程间进行通讯的方法。。1、适用场景当某线程获取了锁对象&#xff0…

计算机应用技术 平面设计,全国信息化计算机应用技术水平教育考试试卷 平面设计师...

科目编号:4233全国信息化计算机应用技术水平教育考试试卷(考试时间:180分钟 考试总分:100分 专业认证课程:Photoshop 平面设计)注意事项1、 请首先按要求在试卷的标封处填写您的姓名、考号等;2、 请仔细阅读各种题目的…

RabbitMQ之消息模式简单易懂,超详细分享

前言上一篇对RabbitMQ的流程和相关的理论进行初步的概述,如果小伙伴之前对消息队列不是很了解,那么在看理论时会有些困惑,这里以消息模式为切入点,结合理论细节和代码实践的方式一起来学习。正文常用的模式有Simple、Work、Fanout…

每天一个linux命令(6):rmdir 命令

今天学习一下linux中命令: rmdir命令。rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的。(注意,rm - r dir命令可代替rmdir,但是有很大危险性。)删除某目录时也必须具…

jvm系列(八):jvm知识点总览

在江湖中要练就绝世武功必须内外兼备,精妙的招式和深厚的内功,武功的基础是内功。对于武功低(就像江南七怪)的人,招式更重要,因为他们不能靠内功直接去伤人,只能靠招式,利刃上优势来…

计算机基础知识的文献,四 计算机文献检索基础知识(原理、结构和功能)

1.计算机检索原理计算机一方面接受用户的检索提问,一方面从数据库中读取文献记录,然后把两者进行比较,即检索提问标识与文献记录标识进行匹配运算,如果比较的结果一致,那么这篇文献就会作为命中文献在检索结果中显示&a…

APP地推心得:可复制的APP地推方案

APP地推难?APP地推方案包含哪些?现在,不需要编程就能自己完成手机APP制作,而且还有大量的APP模板,可以直接套用。APP的制作资金技术大幅度降低,现在最大的问题就是怎么APP推广的问题。 在移动互联网的时代&…

【代码笔记】iOS-播放从网络上下载的语音

代码&#xff1a; ViewController.m #import "ViewController.h" //录音 #import <AVFoundation/AVFoundation.h>interface ViewController () {//播放器AVAudioPlayer *player; }endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad];/…

C# 基于.NET6的CM+Fody+HC入门实战项目(经典)

概述上期我们概述了CMFodyHC&#xff0c;如果之前没有阅读&#xff0c;可以先了解下&#xff1a;C# 为什么说CMFodyHC是WPF开发的最强组合&#xff1f;今天基于最新的VS版本、最新的CM框架版本&#xff0c;.NET基于6.0&#xff0c;搭建了一个WPF入门学习项目实例&#xff0c;关…

PHP资源列表(转)

一个PHP资源列表&#xff0c;内容包括&#xff1a;库、框架、模板、安全、代码分析、日志、第三方库、配置工具、Web 工具、书籍、电子书、经典博文等等。 初始翻译信息来自&#xff1a;《推荐&#xff01;国外程序员整理的 PHP 资源大全》 该内容也可以在github的相关项目上浏…

当今 计算机已进入千家万户英语,学生英语教学论文,关于信息技术在大学英语教学中的应用探析相关参考文献资料-免费论文范文...

导读:这是一篇与学生英语教学论文范文相关的免费优秀学术论文范文资料,为你的论文写作提供参考。摘 要&#xff1a;随着经济全球化和信息化时代的到来,计算机技术已深入到社会的各个领域.以往大学中所使用的传统面授课教学模式已经跟不上信息时代的发展步伐,不能满足当今教学的…

POJ - 2187 Beauty Contest(最远点对)

http://poj.org/problem?id2187 题意 给n个坐标&#xff0c;求最远点对的距离平方值。 分析 模板题&#xff0c;旋转卡壳求求两点间距离平方的最大值。 #include<iostream> #include<cmath> #include<cstring> #include<queue> #include<vector>…

Kong入门学习实践(2)实验环境搭建

【API网关】| 总结/Edison Zhou最近在学习Kong网关&#xff0c;因此根据老习惯&#xff0c;我会将我的学习过程记录下来&#xff0c;一来体系化整理&#xff0c;二来作为笔记供将来翻看。由于我司会直接使用Kong企业版&#xff0c;学习过程中我会使用Kong开源版。本篇&#xff…

Mysql-索引的基础和类型

一、 索引的基础 索引类似于书籍的目录&#xff0c;要想找到一本书的某个特定主题&#xff0c;需要先查找书的目录&#xff0c;定位对应的页码。 存储引擎使用类似的方式进行数据查询&#xff0c;先去索引当中找到对应的值&#xff0c;然后根据匹配的索引找到对应的数据行 二…