Sql Project Publish取代了Deploy - 如何抑制版本控制和挂钩到tfs构建

Reu*_*bin 8 visual-studio-2010 sql-server-2012 sql-data-tools

我们正在使用Sql Server 2012 SSDT,它删除了Visual Studio中用于数据库项目的部署选项(现在是sql项目).我们想像部署那样自动执行Publish步骤,但目前尚不清楚如何执行此操作.所以有几个问题:

  1. 我已将.publish.xml添加到项目中(在第一次手动发布之后,检查添加到项目中).即使在此之后,并将其设置为默认值,当我双击它时,它会构建,但总是会弹出设置窗口,我需要单击"发布"按钮继续.是否有设置会跳过此提示并使用当前值?

  2. 似乎每个发布都生成一个sql输出的版本.我怎样才能抑制这种情况 - 即每次都覆盖基本文件?

  3. 最后,任何用于更新构建以使用新项目类型和发布自动构建命令的指针都将受到赞赏.

Kei*_*ith 7

如何还原"部署"选项:( 仅限Visual Studio 2010/2012 - Visual Studio 2013不再支持此功能)

"部署"选项仍然存在,但由于某种原因,它在菜单中不可用.(被诅咒的Visual Studio团队!)我通过将Deploy选项添加到其中一个工具栏来解决这个问题,如下所示:

  1. 单击工具栏右侧的箭头.
  2. 单击"添加或删除按钮",然后单击"自定义".
  3. 在"自定义"对话框中,单击"添加命令
  4. 选择"Build"类别,然后选择"Deploy Selection"命令.
  5. 保存选择后,工具栏上将显示"Deploy [project name]"选项.您需要在解决方案资源管理器中选择项目才能启用该按钮.

请注意,部署设置与发布设置不同.部署设置在"调试"选项卡上的项目属性中配置.


要回答有关"发布"选项的问题:

1)默认情况下如何使用特定的发布文件,避免恼人的提示

我认为没有办法解决这个问题.

2)如何发布整个数据库,而不仅仅是发布更改

在文本编辑器中打开.publish.xml文件并添加<AlwaysCreateNewDatabase>true</AlwaysCreateNewDatabase>.

例如:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <TargetDatabaseName>MyDatabase</TargetDatabaseName>
    <DeployScriptFileName>MyDatabaseProject.sql</DeployScriptFileName>
    <TargetConnectionString>Data Source=localhost\SQL2012;Integrated Security=True;Pooling=False</TargetConnectionString>
    <PublishDependentProjects>False</PublishDependentProjects>
    <ProfileVersionNumber>1</ProfileVersionNumber>
    <AlwaysCreateNewDatabase>true</AlwaysCreateNewDatabase>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

3)自动构建的命令行语法

首先使用msbuild构建项目,这样就可以在bin中创建.dacpac文件.

然后使用sqlpackage.exe.publish.xml文件发布:

C:\Program Files\Microsoft Visual Studio 10.0\Microsoft SQL Server Data Tools\sqlpackage.exe /Action:Publish /SourceFile:C:\[path to my project]\bin\Debug\MyDatabaseProject.dacpac /Profile:C:\[path to my project]\MyDatabaseProject.publish.xml

请注意,sqlpackage.exe的路径可能不同.


Boz*_*Joe 4

我发现自动化部署 SSDT 数据库项目的最佳方法是使用 msbuild。最初我们使用 VSTSDB 并针对 *.dbproj 文件使用 msbuild。事实证明,部署 sqlproj 文件的参数完全相同。

因为旧的参数列表适用于我们,所以我没有改用 public.xml 文件样式。有相当多针对 dbproj 的 vsdbcmd.exe 和 msbuild 的文档。我会用它作为参考。

这是我们为 FinalBuilder 执行定义的参数列表和执行输出

[ MSBuild Project [ C:\xx\xxx\xx\xx\MyProject.sqlproj ] ]
  Configuration : Release
  OutDir : C:\Builds\1\xxxxx\builddefname\Binaries\Release\
  DeployToDatabase : True
  TargetDatabase : ExistingDatabaseName
  TargetConnectionString : Data source=.;Integrated Security=SSPI;**
  Build started 3/23/2012 2:17:08 PM.
  Deployment script generated to:
  C:\Builds\1\xxxx\builddefname_FB\Binaries\Release\MyProject.sql
  Dropping FK_at_lusys_assetCategory_at_lusys_image...
  Creating FK_dcb28374eeabe8e715038984419...
  Creating FK_d82897e4acd966d4b136c242cef...
  Checking existing data against newly created constraints
  Update complete.
  Done Building Project "C:\xxx\xxxxxxx\xxxxxxxxx\MyProject.sqlproj" (Deploy target(s)).
  Build succeeded.
  0 Warning(s)
  0 Error(s)
Run Code Online (Sandbox Code Playgroud)

将 msbuild 命令行放在一起如下所示:

msbuild XXX.sqlproj /target:Deploy /p:Configuration=xxx;OutDir=xxx;DeployToDatabase=True;TargetDatabase=xxxx;TargetConnectionString="xxxxx";AlwaysCreateNewDatabase=True
Run Code Online (Sandbox Code Playgroud)