使用VS数据库项目简化数据库开发的更新维护-阿里云开发者社区

开发者社区> 吞吞吐吐的> 正文

使用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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS数据持久化-SQLite数据库使用详解
<h1><strong>使用SQLite数据库</strong></h1> <h2><strong>创建数据库</strong></h2> <p>创建数据库过程需要3个步骤:</p> <p>1、使用sqlite3_open函数打开数据库;</p> <p>2、使用sqlite3_exec函数执行Create Table语句,创建数据库表;</p> <p>3、使用sqlite3_close函数释放
984 0
首次曝光 | 阿里数万名开发者都在使用的数据库开发工具到底长什么样?
数据管理DMS(Data Management Service)是阿里巴巴自研图形化的数据库开发工具,已服务阿里巴巴及阿里云上几十万开发者实现安全便捷的数据库访问开发工作。用户可以通过DMS实现25种常见数据库的访问研发。
1346 0
使用SSL安全链接Mysql数据库
一、使用SSL安全连接 To use SSL connections between the MySQL server and client programs, your system must support either OpenSSL or ...
8271 0
4852
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载