使用VS数据库项目简化数据库开发的更新维护

简介:

在项目开发工作中,数据库的更新维护一直是比较头疼的问题,特别是在一个项目要部署到多个目的地,并且不同目的地的数据库可能不一致的情况下,如果没有较好的维护工具,将需要大量的人工维护工作,如果在开发工作中合理使用数据库项目,将会简化大量的人工维护工作。

VS 数据库项目简介

在 MSDN 网站上,有关于数据库项目的详细介绍,不再这里啰嗦。个人的看法就是,让DBA(数据库管理员)也参与进来,把对直接对数据库的修改转换成相应的 SQL 语句,结合源代码管理,自动保留数据库更改历史,数据库项目的部署工具可以自动对比目标数据库与数据库项目当前的差异,然后生成一个针对目标数据库的更新文件,在目标数据库上执行这个文件,即可将目标数据库更新至当前版本。

VS 数据库项目开发生命周期

1、建立项目环境

首先,DBA 创建一个数据库项目并从成品数据库中导入数据库架构。然后,DBA 可以创建一个数据生成计划,以便创建要在独立开发环境中使用的测试数据。最后,DBA 将该数据库项目签入到版本控制中,以供团队使用。 
IC15528

2、数据库项目迭代开发

每位数据库专业人员都与版本控制同步其开发环境。他们可以在文件更改后签出文件,并在独立环境中对这些更改进行开发和测试。这样,他们对自己的数据库项目副本所做的更改仅会部署到各自的独立开发环境中。当某位团队成员生成实际测试数据并对数据库的私有副本运行单元测试时,该团队成员便将这些更改签入到版本控制中。其他团队成员将从版本控制中获取经过测试的更改。 
IC57943

3、生成项目的每日版本

每日版本是通过与数据库项目在版本控制系统中的最新测试版本进行同步而生成的。可以将该版本部署到测试数据库中,然后对生成的测试数据运行单元测试。 
IC118242

4、从项目环境中进行部署

到了将数据库的某个版本部署到生产环境中时,DBA 将与版本控制系统中的标签同步。然后,DBA 检索数据库项目的匹配文件、相关脚本和测试。接下来,DBA 生成 .dbschema 文件。从 .dbschema 文件,DBA 将生成部署脚本并根据需要进行手动修改,然后对临时服务器执行测试部署。DBA 重复此过程,直到可以将该脚本部署到成品服务器为止。如果 DBA 更改了架构、预先部署脚本或后期部署脚本,则这些更改将被重新签入到版本控制中。 
IC376338

数据库项目开发示例

1、数据表字段修改

假设项目中有一个数据表 MapDocument , 现有两个字段, Id 以及 Name ,对应的表语句如下:

1
2
3
4
5
CREATE  TABLE  [dbo].[MapDocument]
(
    [Id] INT  NOT  NULL  IDENTITY(1,1),
    [ Name ] NVARCHAR(50) NULL
)

现在需要添加两个字段,Owner 和 CreateDate,将上面的 Sql 语句改成下面的样子:

1
2
3
4
5
6
7
CREATE  TABLE  [dbo].[MapDocument]
(
    [Id] INT  NOT  NULL  IDENTITY(1,1),
    [ Name ] NVARCHAR(50) NULL ,
    [Owner] NVARCHAR(20) NOT  NULL  DEFAULT  (‘Anonymous’),
    [CreateDate] DATETIME NOT  NULL  DEFAULT  (GETDATE())
)

2、部署到数据库服务器

  1. 如果 VS 能够直接连接到数据库服务器并且可以直接更新的话(不需要经过 DBA 检查),那么部署工作将十分简单,在项目属性页的部署标签页, 将部署动作设置为“创建部署脚本并部署到数据库”(如下图所示),则直接在 VS 中执行部署命令即可。 
    image
  2. 如果不能直接更新数据库的话,则需要将部署动作设置为“创建部署脚本”,生成部署脚本,然后由 DBA 或者实施人员负责更新。

注意事项

  1. 如果有多个数据库服务器需要更新的话,由于这些数据库的版本可能不同,因此必须针对每个数据库服执行部署命令,这样可以针对数据库服务器的结构生成相应的部署脚本;
  2. 如果部署选项是选择部署到文件的话,则执行部署命令只生成数据库更新文件,也就是一个 SQL 文件,在目标服务器上执行这个文件时要注意选择 SQLCMD 模式,否则将无法执行;
  3. 生成的数据库更新文件只是针对特定目标数据库的,最好不要拿到其它的数据库服务器上运行,必须针对数据库重新执行部署命令,生成一份新的部署文件进行更新;

张志敏所有文章遵循创作共用版权协议,要求署名、非商业 、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。

本博客已经迁移到 GitHub , 围观地址: http://beginor.github.io/

本文转自张志敏博客园博客,原文链接:http://www.cnblogs.com/beginor/archive/2010/08/29/1811911.html ,如需转载请自行联系原作者
相关文章
|
1月前
|
NoSQL Java 数据库
【问题篇】springboot项目通过数据库限制实例端口号
【问题篇】springboot项目通过数据库限制实例端口号
19 0
|
2月前
|
编解码 人工智能 数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
Google Earth Engine(GEE)——全球道路盘查项目全球道路数据库
41 0
|
3月前
|
SQL 关系型数据库 MySQL
Python 数据库访问与ORM框架——打造高效开发利器
Python 作为一门广泛使用的编程语言,其在数据库访问方面也有着较为成熟的解决方案,其中ORM框架更是成为了开发者们的首选。本文将介绍 Python 中数据库访问和 ORM 框架的基本概念,以及如何使用 SQLAlchemy 这一优秀的 ORM 框架进行开发。
|
3月前
|
关系型数据库 API 数据库
Python数据库访问与ORM框架:加速开发、提升效率
在现代软件开发中,数据库是不可或缺的组成部分。本文介绍了Python中数据库访问的重要性,并探讨了ORM框架(例如SQLAlchemy)如何帮助程序员加速开发、提升效率。通过使用ORM框架,开发人员可以轻松地将Python对象映射到数据库表,并且可以通过简洁的API进行数据库操作。此外,本文还讨论了ORM框架在处理复杂查询、维护数据一致性和实现数据库迁移方面的优势。
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
|
3月前
|
存储 关系型数据库 MySQL
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
47 0
|
3月前
|
关系型数据库 MySQL 数据库
Linux C/C++ 开发(学习笔记七):Mysql数据库C/C++编程实现 插入/读取/删除
Linux C/C++ 开发(学习笔记七):Mysql数据库C/C++编程实现 插入/读取/删除
49 0
|
3月前
|
SQL 数据库 C++
C++ Qt开发:Charts与数据库组件联动
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`Charts`组件与`QSql`数据库组件的常用方法及灵活运用。在之前的文章中详细介绍了关于`QCharts`绘图组件的使用方式,本章将继续延续这个知识点,通过使用`QSql`数据库模块动态的读取某一个时间节点上的数据,当用户点击查询数据时则动态的输出该事件节点的所有数据,并将数据绘制到图形组件内,实现动态查询图形的功能。
34 0
C++ Qt开发:Charts与数据库组件联动
|
3月前
|
NoSQL 关系型数据库 MySQL
基于Python和mysql开发的BBS问答社区管理系统(源码+数据库+程序配置说明书+程序使用说明书)
基于Python和mysql开发的BBS问答社区管理系统(源码+数据库+程序配置说明书+程序使用说明书)
|
3月前
|
缓存 数据库 索引
高效后端开发:数据库优化策略详解
数据库优化是后端开发中不可或缺的一部分。本文将从多个方面详细阐述数据库优化策略,包括数据表设计、索引优化、查询性能优化等。通过本文的学习,读者可以了解如何优化数据库,提升后端应用性能和稳定性。
69 1