使用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 ,如需转载请自行联系原作者
相关文章
|
2月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
16天前
|
缓存 物联网 数据库
InfluxDB vs TDengine :2025 年了,谁家用的数据库还不能高效读缓存?
在工业互联网和物联网的大数据应用场景中,实时数据的写入和查询性能至关重要。如何快速获取最新设备状态并实时处理数据,直接影响到业务的高效运转。本文将深入分析 TDengine 和 InfluxDB 在缓存机制上的差异,帮助读者更好地理解这两款主流时序数据库在性能优化方面的优劣。
43 1
|
1月前
|
存储 SQL API
探索后端开发:构建高效API与数据库交互
【10月更文挑战第36天】在数字化时代,后端开发是连接用户界面和数据存储的桥梁。本文深入探讨如何设计高效的API以及如何实现API与数据库之间的无缝交互,确保数据的一致性和高性能。我们将从基础概念出发,逐步深入到实战技巧,为读者提供一个清晰的后端开发路线图。
|
1月前
|
存储 缓存 NoSQL
2款使用.NET开发的数据库系统
2款使用.NET开发的数据库系统
|
1月前
|
存储 SQL 数据库
深入浅出后端开发之数据库优化实战
【10月更文挑战第35天】在软件开发的世界里,数据库性能直接关系到应用的响应速度和用户体验。本文将带你了解如何通过合理的索引设计、查询优化以及恰当的数据存储策略来提升数据库性能。我们将一起探索这些技巧背后的原理,并通过实际案例感受优化带来的显著效果。
47 4
|
1月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
62 2
|
1月前
|
监控 Java 数据库连接
在Java开发中,数据库连接管理是关键问题之一
在Java开发中,数据库连接管理是关键问题之一。本文介绍了连接池技术如何通过预创建和管理数据库连接,提高数据库操作的性能和稳定性,减少资源消耗,并简化连接管理。通过示例代码展示了HikariCP连接池的实际应用。
21 1
|
1月前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
163 4
|
2月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
2月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
89 11
下一篇
DataWorks