日期:2014-05-16  浏览次数:20387 次

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

?

?

项目管理实践【六】自动同步数据库【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;"