使用Source Safe for SQL Server解决数据库版本管理问题

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:
简介

    在软件开发过程中,版本控制是一个广为人知的概念。因为一个项目可能会需要不同角色人员的参与,通过使用版本控制软件,可以使得项目中不同角色的人并行参与到项目当中。源代码控制使得代码可以存在多个版本,而不会将代码库变得混乱,典型的场景包括Bug修复、添加新功能、版本整合等。

     虽然在开发层面的版本控制软件已经非常成熟,但目前国内还没有专门针对数据库层面的版本控制软件来帮助不同角色的人员在数据库层面进行团队协作、变更代码管理以及对数据库的变更进行查看和比对。在数据库层面版本控制工具的缺乏可能会出现如下场景:

无法在数据库层面进行团队协作:开发人员A对存储过程的修改导致开发人员B创建的存储过程被覆盖,从而无法比对和追踪
开发人员-开发DBA-测试人员难以协作:SVN等版本工具是基于文件的,很难在数据库层面进行版本控制
数据库发生的变更难以追踪:现有的技术无法追踪由谁、在什么时间、对数据库修改了什么,当发生由数据库引起的报错或性能下降时,难以排查
无法记录对数据库变更的过程资产:数据库变更的历史记录只有数据库运维人员了解,当该相关人员离职或调岗,这些过程资产难以继承
难以审计数据库:现有的数据库审计功能往往依赖于日志,对性能造成很大影响。
SQL脚本无法有效管理:现有的做法往往是将SQL以文件形式保存,无法有效管理和共享
无法查看被加密的数据库对象:当需要对加密的数据库对象进行修改时,如果无法找到对象定义的原始记录,则必须重写该对象
SVN建立和使用复杂:SVN使用流程对于数据库人员过于繁琐,为数据库人员增加了额外的工作负担
 

    由于数据库是整个业务应用的核心,上述问题无论是在开发环境还是在生产环境如果得不到有效的解决,会造成生产力低下、过程资产无法得到管理、数据库审查无法进行、难以排查由数据库变更导致的问题等情况。

 

    下面来介绍一下Source Safe for SQL Server如何解决该类问题。

 

软件的安装

    软件的官网下载完Source Safe的安装包后一路下一步,安装完成后打开Management Studio,在需要加入到源代码控制器的某个数据库服务器上右键,在弹出菜单中选择“添加数据库到版本控制”,如图1所示。

    1

    图1.将数据库添加到版本控制

 

    然后设置相关的选项,如图2所示。

    2

    图2.添加数据库到版本控制相关设置

 

    现在再来看,整个数据库都已经在版本控制之下了,如图3所示。

    3

    图3.查看受版本控制的数据库

 

    至此,Source Safefor SQL Server就安装配置完成了。

 

典型应用场景

  Source Safe可以解决下述问题:

 

开发团队进行版本控制

    在一个开发团队中,对于数据库对象的每一次变更都会自动覆盖上一个版本,导致上一个版本对象定义的丢失。比如说开发人员A创建了存储过程“ProcA”,然后开发人员B修改了存储过程“ProcA”,开发人员A创建的存储过程将会被开发人员B所做的修改覆盖,造成之前定义存储过程的丢失和无法回滚。使用Source Safe可以轻松解决该类问题。

    通过图4,我们看到存储过程“ProcA”由开发人员“Jack”创建后,开发人员“CareySon”对其进行了修改,Source Safe可以完整的记录由谁,在什么时间,做了哪些修改,如图所示。

    1

    图4.查看存储过程“ProcA”被修改的历史记录

 

    2

    图5.查看存储过程 “ProcA”两个版本的差异部分

 

开发里程碑标记

    在开发过程中,往往需要对开发里程碑进行迭代,每一个开发里程碑导致的数据库对象变更都可以完整的被记录和文档化。

    3

    图6.里程碑版本以及涉及到的对象变更

 

生产环境变更管理

    在生产环境中,程序的升级、程序或人为对数据库对象的更改有可能导致数据库出现问题,例如应用程序报错或数据库性能下降。通过SourceSafe可以快速比较出数据库之前版本和当前数据库定义中存在差异的部分,并根据具体情况回滚导致数据库出现问题的对象,从而快速排除错误并保证数据库持续稳定运行。如图7所示。

    4

    图7.选择需要版本比较的对象

 

常用脚本管理

    无论是开发人员还是数据库的运维人员,都会有常用脚本需要保存。过去的做法往往是将SQL代码以文件的形式保存,这样既不方便使用,也不方便分类管理。利用Source Safe的代码管理功能,可以方便的将SQL代码的管理无缝集成到SQL Server Management Studio中。如图8所示。

    5

    图8、使用Source Safe的脚本管理功能对SQL进行管理

 

    此外,Source Safe特别设定了默认文件夹“工具栏快捷方式”,用户可以将频繁使用的SQL代码置于此处,在该分类下的脚本会自动出现在Management Studio的工具栏中,如图9所示。

    6

    图9、将常用脚本置于“工具栏快捷方式”中

 

对选定的对象进行版本归类

    虽然Source Safe每次同步之后都会生成一个基于变更的版本号,但在某些特殊情况下,比如需要对库中某些变更进行管理、对库中的版本进行归类的情况下会需要额外的标签。如图10所示。

7

图10、利用标签标出某个业务版本涉及到的数据库对象

 


与SVN的无缝集成

    SourceSafe的版本内容和历史记录可以直接导出到SVN、TFS、VSS中,从而打通数据库版本控制和现有的SVN系统。在数据库中我们对存储过程dbo.TestProc做了三次变更,如图11所示。

    010

    图11.对存储过程的3次变更

 

    接下来将历史记录导出到SVN,如图12所示。

    011

    图12.将SourceSafe记录导出到SVN

 

    导出完成后,通过SVN客户端软件可以看到对应SQL文件的在数据库中对应图10的三次变更,如图13所示。

    012

    图13.SVN对应SourceSafe中的3次变更

 

软件的下载

    软件的下载可以在软件的官网下载,下载地址请猛击这里(http://www.grqsh.com/products.htm?tab=sourcesafe-for-sql-server)。

分类: SQL Server 版本管理
标签: 数据库版本管理, 数据库变更管理, SQL Server版本控制, 数据库版本控制


本文转自CareySon博客园博客,原文链接:http://www.cnblogs.com/CareySon/p/3700601.html,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
|
4天前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
49 6
|
14天前
|
数据库 Windows
SqlServer数据恢复—SqlServer数据库所在分区损坏的数据恢复案例
一块硬盘上存放的SqlServer数据库,windows server操作系统+NTFS文件系统。由于误操作导致分区损坏,需要恢复硬盘里的SqlServer数据库数据。
|
1月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
83 11
|
2月前
|
SQL 缓存 监控
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
本文详细解析了数据库、缓存、异步处理和Web性能优化四大策略,系统性能优化必知必备,大厂面试高频。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:4 大性能优化策略(数据库、SQL、JVM等)
|
1月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
1月前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
|
2月前
|
SQL 关系型数据库 MySQL
体验使用DAS实现数据库SQL优化,完成任务可得羊羔绒加厚坐垫!
本实验介绍如何通过数据库自治服务DAS对RDS MySQL高可用实例进行SQL优化,包含购买RDS实例并创建数据库、数据导入、生成并优化慢SQL、执行优化后的SQL语句等实验步骤。完成任务,即可领取羊羔绒加厚坐垫,限量500个,先到先得。
227 13
|
2月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
2月前
|
SQL 数据库
gbase 8a 数据库 SQL优化案例-关联顺序优化
gbase 8a 数据库 SQL优化案例-关联顺序优化
|
2月前
|
SQL 存储 Linux
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
121 4