日期:2014-05-16 浏览次数:20400 次
?
?
项目管理实践【六】自动同步数据库【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 "EXEC sp_detach_db 'StartKitDB','True'"" 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 "EXEC sp_attach_db @dbname = N'StartKitDB',@filename1 = N'C:\StartKitDB\StartKitDB.mdf', @filename2 = N'C:\StartKitDB\StartKitDB_log.ldf'""