项目管理实践----自动同步数据库
2013-03-31 08:16
351 查看
在上一篇项目管理实践【五】自动编译和发布网站中,我们讲解了如何使用MSBuild+Robocopy+WebDeployment来自动编译和部署网站,今天,我们来看一下,如何使用MSBuild +SVN来自动同步数据库。
首先,将我们项目中的数据库文件和数据库日志文件放到某个目录下,这里放到StartKitDB目录下,然后在该目录下新建一个名为StartKitDB的文本文件,修改扩展名为proj,实际上,在理论上任何扩展名都可以,然后,使用记事本或其他程序打开文件,将下面的内容复制到其中,保存。
<?xmlversion="1.0"
encoding="utf-8"?>
<ProjectDefaultTargets="All"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- 需要引入MSBuild Community Tasks -->
<ImportProject="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<PropertyGroup>
<!--数据库连接字符串,可以根据需要修改-->
<ConnectionString>Server=.;Integrated Security=True</ConnectionString>
</PropertyGroup>
<ItemGroup>
<!--数据库文件-->
<DBFilesInclude="StartKitDB.mdf;StartKitDB_log.ldf"/>
</ItemGroup>
<TargetName="ALL">
<!--重启SqlServer服务-->
<ServiceControllerServiceName="mssqlserver"
Action="Restart" />
<!--分离数据库-->
<ExecCommand="OSQL -S . -E -n -Q
"EXEC sp_detach_db 'StartKitDB','True'""
IgnoreExitCode="false" />
<!--停止SqlServer服务-->
<ServiceControllerServiceName="mssqlserver"
Action="Stop" />
<!--删除旧版本的数据库文件-->
<DeleteFiles="C:\StartKitDB\$(DBFiles)" />
<!--复制最新版本的数据库文件到指定位置-->
<CopySourceFiles="@(DBFiles)"
DestinationFolder="C:\StartKitDB" />
<!--启动SqlServer服务-->
<ServiceControllerServiceName="mssqlserver"
Action="Start" />
<!--附加复制过来的最新版本的数据库文件到数据库中-->
<ExecCommand="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'""
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】并同步做了比较详细的讲解,大家可以做个参考!
首先,将我们项目中的数据库文件和数据库日志文件放到某个目录下,这里放到StartKitDB目录下,然后在该目录下新建一个名为StartKitDB的文本文件,修改扩展名为proj,实际上,在理论上任何扩展名都可以,然后,使用记事本或其他程序打开文件,将下面的内容复制到其中,保存。
<?xmlversion="1.0"
encoding="utf-8"?>
<ProjectDefaultTargets="All"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- 需要引入MSBuild Community Tasks -->
<ImportProject="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>
<PropertyGroup>
<!--数据库连接字符串,可以根据需要修改-->
<ConnectionString>Server=.;Integrated Security=True</ConnectionString>
</PropertyGroup>
<ItemGroup>
<!--数据库文件-->
<DBFilesInclude="StartKitDB.mdf;StartKitDB_log.ldf"/>
</ItemGroup>
<TargetName="ALL">
<!--重启SqlServer服务-->
<ServiceControllerServiceName="mssqlserver"
Action="Restart" />
<!--分离数据库-->
<ExecCommand="OSQL -S . -E -n -Q
"EXEC sp_detach_db 'StartKitDB','True'""
IgnoreExitCode="false" />
<!--停止SqlServer服务-->
<ServiceControllerServiceName="mssqlserver"
Action="Stop" />
<!--删除旧版本的数据库文件-->
<DeleteFiles="C:\StartKitDB\$(DBFiles)" />
<!--复制最新版本的数据库文件到指定位置-->
<CopySourceFiles="@(DBFiles)"
DestinationFolder="C:\StartKitDB" />
<!--启动SqlServer服务-->
<ServiceControllerServiceName="mssqlserver"
Action="Start" />
<!--附加复制过来的最新版本的数据库文件到数据库中-->
<ExecCommand="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'""
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】并同步做了比较详细的讲解,大家可以做个参考!
相关文章推荐
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】
- 项目管理实践【六】自动同步数据库
- 项目管理实践【六】自动同步数据库
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】
- 项目管理实践六、自动同步数据库【Using Visual Studio with Source Control Sys
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automaticall
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automaticall
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automaticall
- 项目管理实践五、自动编译和发布网站【Using Visual Studio with Source Control S
- 项目管理实践【五】自动编译和发布网站
- 项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website autom
- 项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】
- 项目管理实践【五】自动编译和发布【Using Visual Studio with Source Control System to build and publish website automatically】
- 项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】
- 项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】
- 项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】
- 项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】