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

在上一篇项目管理实践【五】自动编译和发布网站中,我们讲解了如何使用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】并同步做了比较详细的讲解,大家可以做个参考!

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

时间: 2024-11-05 21:19:49

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

项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】

在上一篇教程项目管理实践[三]每日构建[Daily Build Using CruiseControl.NET and MSBuild] 中,我们讲解了如何使用CCNET+MSBuild来自动编译项目,今天我们讲解一下怎么使用MSBuild+WebDeployment+Robocopy自动编译过和部署ASP.NET网站. 首先安装下面的三个软件: 1.MSBuild.Community.Tasks下载:http://msbuildtasks.tigris.org/files/documents/

C#与VB.NET代码自动转换插件(For Visual Studio)

问题描述 ivanx著于2007-11-2918:56:13附件中的源代码包括一个VisualStudio的插件项目.这个插件可以在tools菜单中添加一个按钮,用于转换Vb.net代码到C#,或者C#到VB.NET.附件里还包括了一个这个插件add-in的安装项目. 解决方案 解决方案二:MARK

Visual Studio 2013中C#如何创建Local Database?

问题描述 我在自学C#过程中遇到了一个困难,教材使用的是VisualStudio08版本,教材中让我创建一个LocalDatabase,但是我在Project-Additems中并没有找到这个选项.请问是怎么会是并且该如何解决呢?谢谢. 解决方案 解决方案二:sqlserver上建个数据库,ado.net方式连接数据库,去操作数据.原理一样,只是数据来源不一样.

Xamarin Studio中如何像Visual Studio一样添加引用System.Numerics

问题描述 因为我想使用BigInteger... 解决方案 解决方案二:你可以搜到开源的.net代码啊.解决方案三:这是唯一方法?不能通过AssemblyReference吗?

Visual Studio 2010自动执行属性

详解Visual Studio 2010中自动执行属性 在Visual Studio 2010中,有不少特性能帮助大家更好,更快的完成开发工作.本文将介绍的是自动执行属性. 自动执行的属性能够让你迅速指定一个类的属性,不用写"Get"和"Set"这个属性的代码.当你为自动执行的属性写代码的时候,Visual Basic编译器自动创建一个私有字段存储这个属性的变量,此外还创建相关的"Get"和"Set"步骤. 采用自动执行的属性

前端开发工具-visual studio code中html文档中输入script代码自动补全问题

问题描述 visual studio code中html文档中输入script代码自动补全问题 请问各位大神,怎么配置visual studio code(vsd)才能在html文档中插入script脚步有 自动补全的功能!!!开发工具-visual studio code中html文档中输入script代码自动补全问题-visual studio 补全"> 但是,如何在html中的script标签内实现补全 解决方案 visual studio 代码自动补全 与快捷键如何在Visual

Red Gate系列之二 SQL Source Control 3.0.13.4214 Edition 数据库版本控制器 完全破解+使用教程

原文:Red Gate系列之二 SQL Source Control 3.0.13.4214 Edition 数据库版本控制器 完全破解+使用教程 Red Gate系列之二 SQL Source Control 3.0.13.4214 Edition 数据库版本控制器 完全破解+使用教程 Red Gate系列文章: Red Gate系列之一 SQL Compare 10.2.0.1337 Edition 数据库比较工具 完全破解+使用教程 Red Gate系列之二 SQL Source Cont

Visual Studio 2013引入联网IDE体验 自动同步设备

近日,Visual Studio 2013以 Visual Studio 2012 和后续的 Visual Studio 更新中的进展为基础构建而成,为开发团队提供需要的解决方案,使其接纳这种转变并开发和交付利用下一波 Windows 平台创新 (Windows 8.1) 的新式应用程序,同时在所有 Microsoft 平台上支持多种设备和服务.设备和服务体验有了根本性的变革,改变了行业对软件开发的处理方式.消费者.客户和员工现在需要一种全新的应用程序.他们要求应用程序在多种屏幕和设备上提供最佳

MSSQL自动同步设置方法_数据库其它

MSSQL自动同步 这里以117和75为例说明:117发布&分发服务器.75订阅服务器 一.准备工作: 1.117&75上建立sqlagt用户,隶属于administrators组,用于启动Sqlserveragent服务(开机自启动),本地系统帐户local,将不具备网络功能,会产生错误 2.117/75上企业管理器中的SQL注册必须为本机名称,不能为local或ip 3.在117上建立75的SQL注册 4.117/75上如果安装了MSSQL后更改过机器名,需要修改MSSQL注册主机名: