【问题标题】:DB Deployment with MsBuild使用 MsBuild 部署数据库
【发布时间】:2010-11-08 21:45:15
【问题描述】:

任何人都获得了有关如何在 MSBuild 中不使用 TFS 进行数据库部署的示例。我在旧职位的 nant 中进行了自动数据库部署,但需要在新工作的 msbuild 中进行。我正在使用 nant 并设置一个布尔标志来触发处理 sql 文件,但我不确定如何在 msbuild 中执行此操作。 MSBuild 令人惊讶的一切都指向 TFS

我正在使用以下算法

//  Set run updates = false
//  Store DB Version from Version Table
//  For each file in SQL directory
//    if file == db version
//      set run updates = true
//    else if run updates
//      run sql in file
//      update db version

我愿意改变处理方式...但不能预见我的公司会迁移到 TFS

【问题讨论】:

    标签: msbuild continuous-integration


    【解决方案1】:

    我决定使用DBDeploy 进行数据库部署。以下适用于我的情况。

      <Target Name="DeployDB">
        <RemoveDir Directories="$(MSBuildProjectDirectory)\..\temp" ContinueOnError="true" />
        <MakeDir Directories="$(MSBuildProjectDirectory)\..\temp" ContinueOnError="true" />
        <Exec Command="$(MSBuildProjectDirectory)\..\lib\dbdeploy\example\tools\nant\bin\nant -buildfile:dbdeploy.build -D:DBConnstring=&quot;$(MainDatabaseConnectionString)&quot; -D:SQLDirectory=..\DB -D:OutputFile=..\Temp\Deploy.sql" />
        <MSBuild.ExtensionPack.SqlServer.SqlExecute TaskAction="Execute" Files="..\Temp\Deploy.sql" ConnectionString="$(MainDatabaseConnectionString)" />
        <RemoveDir Directories="$(MSBuildProjectDirectory)\..\temp" ContinueOnError="true" />
      </Target>
    

    构建文件为

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="dbdeploy_example" default="generate-script" basedir="." xmlns="http://nant.sf.net/release/0.85/nant.xsd">
      <loadtasks assembly="../lib/DbDeploy/bin/Net.Sf.Dbdeploy.dll" />
      <property name="DBConnstring" value="Server=localhost;Initial Catalog=XXXX;Integrated Security=SSPI;" />
      <property name="SQLDirectory" value="." />
      <property name="OutputFile" value="deploy.sql" />
      <property name="UndoOutput" value="deploy-undo.sql" />
    
      <target name="generate-script" description="generate a sql upgrade script">
        <echo message="DBConstring: ${DBConnstring}" />
        <echo message="SQLDirectory: ${SQLDirectory}" />
        <echo message="OutputFile: ${OutputFile}" />
        <echo message="UndoOutput: ${UndoOutput}" />
        <dbdeploy dbType="mssql"
          dbConnection="${DBConnstring}"
          dir="${SQLDirectory}"
          outputFile="${OutputFile}"
          undoOutputFile="${UndoOutput}" />
      </target>
    </project>
    

    【讨论】:

      猜你喜欢
      • 2012-07-02
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多