如何通过Visual Studio来管理我们的数据库项目
某日的一个早晨,产品告诉我说要把之前变更的一个功能更改回原来的设计内容,但是发现我们之前的查询业务逻辑实在Proc中实现的,没有进行备份,不得已又要重新对该业务逻辑进行编码,浪费了不必要的时间与精力。
通过这件事后思考,针对业务系统,很多复杂的查询逻辑是在PROC 中进行实现,如果哪天需求变更或者上线后发现问题需要回滚,这时候就会非常麻烦,如果能将数据库项目中相关视图,触发器或存储过程与版本管理工具结合起来的话,对于不同版本与不同分支时就能省很大一份力了,这样就解决了很多不必要的麻烦。
为了解决问题首先是上网查相关资料,发现很多工具,但是不尽人意,兼容性和使用规则上不是那么完美,最后想到了宇宙第一IDE Visual Studio,也许微软早都替我们想好了呢,如此就发现了《SQL SERVER 数据库项目》,在结合了git后真是屡试不爽,下面就着重介绍一下数据库项目在系统中的应用。
1、打开VS,点击文件-新建项目-SQL SERVER 数据库项目(tips:安装vs时需要添加数据库管理插件)

2、创建项目后,在创建的解决方案下右键点击导入-数据库-选择数据库所在连接,导入设置默认就好,如果你们的数据库权限范围较高的话,根据自身情况设置
3、启动成功后,会自动扫描数据库的相关配置加载到VS列表当中,这样对系统的数据库架构就一览无遗了

4、打开某个表的结构文件,可以看到我们表结构设计,相关的索引、主键、触发器等,当然都只是结构,并且我们在界面上修改后,同时会生成对应的SQL语句,我们可以直接到数据库中F5执行 以下即可

有的同学会说,我还是习惯在SqlServer中对表进行修改,包含业务逻辑SQL的编写,还有些ef code first 相关的项目都是会直接操作到DB项目的,无妨,接下来我来看数据库项目重要一个功能,架构比较
首先我在Person 内通过Sql Server新增一个字段
alter table person add DepartmentId int null
增加完毕后,右键我们的数据库项目,点击架构比较,这里需要进行区分,假如你在VS内更改的表结构往数据库更新,就将数据项目放置左边,从数据库往数据库项目更新,反之,否则更新反了后果可是很糟糕的,选择数据源后,点击比较,VS就会自动比较出当前项目与比较项目的差异,这里就可以根据你自己的需要进行一个勾选,然后点击更新后,就会将左边的架构更新至右边了。

更新完毕之后,数据库项目中对应的表结构、存储过程、触发器等文件就会变成对应的物理文件,这些文件我们可以将它放置代码管理工具进行管理了,并且很好的注释此次更改的内容或新增的需求等,例如:
git add person.sql
git commit -ma "人员表增加部门Id"
git push
通过代码管理工具我们就能将我们的数据项目打成一个一个分支,很方便查到我们每个时期对应的结构文件了。
本文只是简单记录数据库项目在实际开发过程中带给我们的便利,让更多人知道这个实用的工具,其中还有很多坑需要各位一点一点去发现,这里就不一细说了,文章有写的不当的地方,请及时指出,如本文对您有所帮助,也请点个推荐,您的肯定也是是我最大的动力。thanks
如何通过Visual Studio来管理我们的数据库项目的更多相关文章
- 使用VSTS的Git进行版本控制(四)——在Visual Studio中管理分支
使用VSTS的Git进行版本控制(四)--在Visual Studio中管理分支 可以从web版Team Services Git repo 的Branches视图中管理工作.定制视图来跟踪最关注的分 ...
- 使用Visual Studio Team Services敏捷规划和项目组合管理(七)——流程定制
使用Visual Studio Team Services敏捷规划和项目组合管理(七)--流程定制 在Team Services中,可以通过流程定制工作追踪体验.流程定义了工作项跟踪系统的构建部分,以 ...
- 使用Visual Studio Team Services敏捷规划和项目组合管理(六)——VSTS仪表盘的使用
使用Visual Studio Team Services敏捷规划和项目组合管理(六)--VSTS仪表盘的使用 仪表盘使团队能够看到项目的状态和监控项目的进展.简单来说,不必深入到团队项目站点的其他部 ...
- 使用Visual Studio Team Services敏捷规划和项目组合管理(五)——组合管理
使用Visual Studio Team Services敏捷规划和项目组合管理(五)--组合管理 组合待办事项为产品所有者提供关于几个敏捷特性团队工作的洞察.产品所有者可以将高优先级的目标定义为Ep ...
- 使用Visual Studio Team Services敏捷规划和项目组合管理(四)——冲刺计划和任务板
使用Visual Studio Team Services敏捷规划和项目组合管理(四)--冲刺计划和任务板 团队在sprint计划会议期间创建冲刺积压工作项,通常在冲刺的第一天召开该会议.每个冲刺都对 ...
- 使用Visual Studio Team Services敏捷规划和项目组合管理(三)——使用Kanban板
使用Visual Studio Team Services敏捷规划和项目组合管理(三)--使用Kanban板 1.要查看Kanban板,请单击Work>Backlogs页面上的Board 链接. ...
- 使用Visual Studio Team Services敏捷规划和项目组合管理(二)——VSTS中的工作项
使用Visual Studio Team Services敏捷规划和项目组合管理(二)--VSTS中的工作项 1.通过project/team下拉菜单选择MyHealthClinic\Web,导航到W ...
- 使用Visual Studio Team Services敏捷规划和项目组合管理(一)——使用团队、区域和迭代
使用Visual Studio Team Services敏捷规划和项目组合管理(一)--使用团队.区域和迭代 概述 在本实验,你将会了解Visual Studio Team Services提供的敏 ...
- 使用Visual Studio 创建新的Web Part项目
使用Visual Studio 创建新的Web Part项目 Web Part是你将为SharePoint创建的最常见的对象之中的一个.它是平台构建的核心基块. 1. 管理员身份打开Visual St ...
随机推荐
- 《C++ Primer》 chapter 15 TextQuery
<C++ Primer>中第15章为了讲解面向对象编程,举了一个例子:设计一个小程序,能够处理查询给定word在文件中所在行的任务,并且能够处理“非”查询,“或”查询,“与”查询.例如执行 ...
- CSS3 Transitions 你可能不知道的知识点
如何临时让transition失效 我们给一个element设置了transition效果,但某些特殊情况,我们希望让transition临时失效.我们第一反应就是先移除transition设置,等其 ...
- Poi2006 Palindromes
2780: Poi2006 Palindromes Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 15 Solved: 5[Submit][Stat ...
- contextMenu,右键菜单
<!DOCTYPE html> <html> <head> <title>ContextMenu Event Example</title> ...
- MyEclipse 修改项目字符集
项目->右键+properties->Resource->Text file container->others->utf-8
- IDEA Show Line Number
刚开始用IDEA,经常发现右侧没有显示行号,然后去右键选一下,就显现了 一直没有留意这个现象,刚用vim想删几行数据代码,突然发现没有行号了 明明记得刚刚才右键显示了的 好吧,有行号用着比较顺心了.. ...
- PHP实现验证码图片
<?php header("Content-type: image/png"); session_start(); $authnum = ''; $str = 'abcdef ...
- shc加密shell脚本
下载地址:http://www.datsi.fi.upm.es/~frosal/sources/ 安装 .tgz cd shc- mkdir -p /usr/local/man/man1 这步是必须的 ...
- 记一次企业级爬虫系统升级改造(五):基于JieBaNet+Lucene.Net实现全文搜索
实现效果: 上一篇文章有附全文搜索结果的设计图,下面截一张开发完成上线后的实图: 基本风格是模仿的百度搜索结果,绿色的分页略显小清新. 目前已采集并创建索引的文章约3W多篇,索引文件不算太大,查询速度 ...
- Android开发系列之屏幕密度和单位转换
由于Android的开源性,所以目前市面上面Android手机的分辨率特别多,这样的话就给我适配带来了一定的难度.要想做好适配,我们首先应该明白什么是分辨率.PPI.屏幕大小等概念,还有在不同的屏幕密 ...
