`

项目管理实践【六】自动同步数据库

阅读更多

 

 

项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】

 

转自:http://www.cnblogs.com/ttzhang/archive/2008/11/11/1331034.html

 

 

在上一篇项目管理实践【五】自动编译和发布网站中,我们讲解了如何使用MSBuild+Robocopy+WebDeployment来自动编译和部署网站,今天,我们来看一下,如何使用MSBuild +SVN来自动同步数据库。

首先,将我们项目中的数据库文件和数据库日志文件放到某个目录下,这里放到StartKitDB目录下,然后在该目录下新建一个名为StartKitDB的文本文件,修改扩展名为proj,实际上,在理论上任何扩展名都可以,然后,使用记事本或其他程序打开文件,将下面的内容复制到其中,保存。

<?xml version="1.0" encoding="utf-8"?>

<Project DefaultTargets="All" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<!-- 需要引入MSBuild Community Tasks -->

<Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

<PropertyGroup>

<!--数据库连接字符串,可以根据需要修改-->

<ConnectionString>Server=.;Integrated Security=True</ConnectionString>

</PropertyGroup>

 

<ItemGroup>

<!--数据库文件-->

<DBFiles Include="StartKitDB.mdf;StartKitDB_log.ldf"/>

</ItemGroup>

<Target Name="ALL">

<!--重启SqlServer服务-->

<ServiceController ServiceName="mssqlserver" Action="Restart" />

<!--分离数据库-->

<Exec Command="OSQL -S . -E -n -Q &quot;EXEC sp_detach_db 'StartKitDB','True'&quot;" IgnoreExitCode="false" />

<!--停止SqlServer服务-->

<ServiceController ServiceName="mssqlserver" Action="Stop" />

<!--删除旧版本的数据库文件-->

<Delete Files="C:\StartKitDB\$(DBFiles)" />

<!--复制最新版本的数据库文件到指定位置-->

<Copy SourceFiles="@(DBFiles)" DestinationFolder="C:\StartKitDB" />

<!--启动SqlServer服务-->

<ServiceController ServiceName="mssqlserver" Action="Start" />

<!--附加复制过来的最新版本的数据库文件到数据库中-->

<Exec Command="OSQL -S . -E -n -Q &quot;EXEC sp_attach_db @dbname = N'StartKitDB',@filename1 = N'C:\StartKitDB\StartKitDB.mdf', @filename2 = N'C:\StartKitDB\StartKitDB_log.ldf'&quot;" IgnoreExitCode="false" />

</Target>

</Project>

当然了,如果我们希望:当我们提交最新的数据库文件和日志文件到服务器后,自动从服务器分离旧版本的数据库,同时附加最新版本的数据库,那么我们就要借助CCNET和SVN服务器,所以我们首先要把存放数据库文件、日志文件及StartKitDB.proj文件的StartKitDB文件夹,纳入到我们的版本控制中。但是,如果我们简单的把这个文件添加到我们的StartKit项目的代码库中,那么,当我们提交数据库更新时,就会自动编译整个StartKit项目,而这时候,我们项目可能并没有更新,所以我们要把数据库和项目分开为二个代码库。

我们按照在项目管理实践教程二、源代码控制 中的讲解,使用VisualSVN Server添加一个代码库【Repository】StartKitDB,然后,使用TortoiseSVN把上面的三个文件迁入到SVN服务器上,最后,按照项目管理实践【三】每日构建 的讲解,在CCNET上添加一个项目【Project】,一定根据实际情况修改相应的文件路径,把tasks的子节点msbuild下的projectFile节点值配置为我们上面新建的StartKitDB.proj文件。

注意:你在CCNET中配置把SVN服务器上的数据库文件迁出的位置不要和上面的StartKitDB.proj文件中的位置相同,具体原因嘛?你可以先自己想想!
OK,搞定啦!你可以提交一次数据库到SVN服务器,试试看有没有效果,怎么样?成功了吧!嘿嘿…

这种方法适合在开发过程中使用,如果我们已经部署了项目或者已经交付给了用户,那么用户可能已经添加和更新的很多数据,此时和我们开发时在SVN上的最新版本也不一致了,这时候考虑到用户数据的安全,我们可能需要给用户的是数据库更新脚本,而且要保证用户的数据安全,那么这时候,怎么办呢?我在Visual Studio 2008中如何比较二个数据库的架构【Schema】和数据【Data】并同步做了比较详细的讲解,大家可以做个参考!

如果你对我讲解的这些内容不熟悉,建议你从头开始看这个系列的教程:项目管理实践系列教程

分享到:
评论

相关推荐

    使用SyncNavigator实现数据库异地同步、断点续传、异构同步

    * 自动同步数据库数据:SyncNavigator可以自动同步数据库数据,提高数据的实时性和一致性。 SyncNavigator是Microsoft SQL Server 2008中的一款功能强大、使用灵活的同步工具,可以实现数据库异地同步、断点续传、...

    数据库项目开发与实践

    在数据库项目开发与实践中,我们首先需要理解数据库的基础知识,包括关系型数据库的基本概念,如实体、属性、键、索引等,以及非关系型数据库(NoSQL)的不同类型,如文档数据库、图形数据库、键值存储和列族数据库...

    SqlServer数据库同步

    【SqlServer数据库同步】是项目中常见的一种技术需求,特别是在数据分散在不同的服务器上,并需要跨网域调用的场景下。数据库同步能够确保数据的一致性和实时性,提高系统的稳定性和可靠性。 首先,进行SqlServer...

    C#学习实现自动操作数据库

    在实际项目中,你可能需要创建一些辅助类或方法,如DbHelper,封装上述数据库操作,实现对数据库的自动化操作。这样,通过调用这些方法,就可以轻松地完成数据库的增删改查。 9. **异常处理**: 数据库操作时,应...

    Visual C++实践与提高数据库篇+光盘

    MFC提供了数据绑定机制,可以将控件直接绑定到数据库字段,实现数据的自动同步。 6. **事务处理**: 在多条数据库操作必须成功执行或全部回滚的情况下,事务处理是必不可少的。Visual C++提供了支持事务的API,...

    Java数据库系统项目开发实践代码大全之2

    在本项目"Java数据库系统项目开发实践代码大全之2"中,我们主要关注的是使用Java语言进行数据库系统的开发和实践。这个项目包含了多个章节的源代码,分别对应不同的主题和功能,包括第4章、第5章、第6章、第7章、第8...

    20个数据库设计最佳实践

    - **实践要点**:在项目初期花费更多时间在数据库设计上,可以大大节省后续的维护成本。 - **实现技巧**:建立良好的设计习惯,持续学习最新的数据库技术和最佳实践。 通过遵循以上20个最佳实践,不仅可以提高...

    JAVA将一个数据中数据定时自动复制(抽取)到另一个数据库

    本文将深入探讨如何使用Java编程语言实现从一个数据库中定时自动抽取数据并复制到另一个数据库,以达到数据库间的实时或近实时同步。 首先,我们需要了解基础概念。Java是一种广泛使用的面向对象的编程语言,具有...

    瑞吉外卖项目源码及数据库资源

    在瑞吉外卖项目中,SpringBoot可能被用来管理依赖、提供内嵌式Web服务器(如Tomcat)以及自动配置其他Spring组件。 Mybatis-Plus是Mybatis的扩展工具,它在Mybatis的基础上简化了 CRUD 操作,提供了丰富的API,使得...

    数据库—财务管理系统

    8. **接口集成**:与银行、税务、ERP等外部系统对接,实现数据自动同步,减少人工操作,提高效率。 这个财务管理系统的设计通常遵循软件工程的规范,包括需求分析、系统设计、编码实现、测试调试和后期维护。其源...

    自动采集更新数据库结构工具DBUpdate2008源码

    标题中的“自动采集更新数据库结构工具DBUpdate2008源码”指的是一个专为Microsoft SQL Server 2008设计的工具,用于自动化数据库结构的管理和同步。这个工具能够帮助开发者和数据库管理员轻松地获取目标数据库的...

    java数据库图书馆管理系统设计

    《Java数据库图书馆管理系统设计》 在信息技术飞速发展的今天,利用计算机进行...通过完成这样的项目,学习者不仅能深入理解Java与数据库的结合,还能锻炼项目管理、团队协作等软技能,为未来的职业生涯打下坚实基础。

    数据库 人事管理系统

    数据库人事管理系统是一个全面而小型的解决...它通过有效的数据库管理和功能丰富的模块化设计,实现了对企业人事工作的高效自动化管理。对于希望提升人力资源管理效率的企业来说,这是一个值得参考和借鉴的解决方案。

    数据库大作业房屋中介管理系统mysql

    ### 数据库大作业房屋中介...综合上述知识点,房屋中介管理系统不仅涵盖了数据库设计的多个方面,还展示了如何将数据库与实际业务需求相结合,通过系统化的管理和自动化处理,显著提高了房屋租赁管理的效率和准确性。

    仓库管理的一个数据库

    总结,尽管这个仓库管理数据库存在瑕疵,但它为我们提供了一个学习数据库管理、数据更新和信息重置实践的平台。通过深入研究和分析,我们可以从中吸取经验,提高对数据库系统设计和管理的理解,为未来的工作或学习...

    人工智能-项目实践-C#-一个基于C#+ASP.Net Core实现的在线考试系统,数据库操作使用Enity Framework

    本项目以“人工智能-项目实践-C#-一个基于C#+ASP.Net Core实现的在线考试系统,数据库操作使用Enity Framework Core框架”为主题,详细介绍了如何运用这些技术构建一个功能完备的在线考试平台。 首先,C#是一种面向...

    数据库 仓库管理系统

    《仓库管理系统:基于VC++的数据库实践》 仓库管理系统是企业管理中的重要组成部分,它通过集成化的方式对库存物品的入库、出库、调拨、盘点等操作进行高效管理,以确保库存信息的准确性和实时性。在这个项目中,...

    14-数据库课程设计任务书-某客运公司运输管理系统数据库设计.docx

    参考文献包括《数据库系统概论》、《SQL Server 2008基础教程》、《数据库系统设计与项目实践》和《数据库系统及应用实验与课程设计指导》,这些书籍将为设计和实现提供理论和技术支持。 完成以上工作后,学生需...

    企业工资管理系统 数据库课程设计(源码+课程设计)

    企业工资管理系统是一个典型的数据库应用案例,它涉及到数据库设计、编程实现以及系统管理等多个方面的知识。...通过这个项目,学生可以深入理解数据库在实际应用中的角色,并锻炼自己的编程和项目管理能力。

    人事管理系统数据库课程设计

    - **特点**:具备丰富的调试工具、代码编辑器、项目管理工具等,能够有效提升开发效率。 ##### 2.2 数据库:Microsoft SQL Server 2005 - **简介**:SQL Server 2005是一款企业级的关系型数据库管理系统,支持大...

Global site tag (gtag.js) - Google Analytics