Msbuild 使用Web部署部署SSDT

Msbuild 使用Web部署部署SSDT,msbuild,msdeploy,sql-server-data-tools,sqlproj,Msbuild,Msdeploy,Sql Server Data Tools,Sqlproj,我有一个VS 2012解决方案,它包括一个SSDT项目(sqlproj)和一个MVC Web应用程序。我已经为部署web应用程序设置了许多配置文件,现在想使用dbdacfx(或其他什么?)来部署SSDT项目生成的dacpac。我已经测试了dacpac本身,它工作得完美无缺。然而,弄清楚如何将两者结合起来却很难。我所看到的通过Web部署部署增量数据库更改的每个示例似乎都需要一个数据库实例——如何让它使用现有的dacpac 希望我问的问题是对的:) 谢谢 假设您已经有了要部署的dacpac文件,可以

我有一个VS 2012解决方案,它包括一个SSDT项目(sqlproj)和一个MVC Web应用程序。我已经为部署web应用程序设置了许多配置文件,现在想使用dbdacfx(或其他什么?)来部署SSDT项目生成的dacpac。我已经测试了dacpac本身,它工作得完美无缺。然而,弄清楚如何将两者结合起来却很难。我所看到的通过Web部署部署增量数据库更改的每个示例似乎都需要一个数据库实例——如何让它使用现有的dacpac

希望我问的问题是对的:)


谢谢

假设您已经有了要部署的dacpac文件,可以使用sqlpack.exe来部署它。使用PowerShell:

& "C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /sf:"MyProject.Database.dacpac" /a:publish /TargetConnectionString:$DBConnectionString /p:VerifyDeployment=true /p:CreateNewDatabase=$CreateNewDatabase | Out-Default
这假设脚本与dacpac文件并行,并定义了以下变量:

  • $DBConnectionString—数据库连接字符串
  • $CreateNewDatabase-如果新数据库不存在,是否创建新数据库
您可以传入更多选项:

您是否考虑过设置发布配置文件并使用SQLPackage来推动增量更改?我已经在web应用程序和sql项目中设置了多个配置文件,并且我可以使用VS中的“发布”选项为每个项目发布所有配置文件。至于SQLPackage,您的意思是从命令行调用它,还是让web应用程序中的发布配置文件使用SQLPackage?抱歉,这对我来说有点陌生。我指的是从命令行调用SQLPackage。我不太确定您的web应用部署代码在幕后发生了什么,因此不确定这是否是一个可行的选项。最后不得不编写powershell脚本,以适应使用msdeploy和dbdacfx安装db的情况。我可以通过UI或直接在.pubxml中将dacpac添加到发布配置文件中,并将其复制到目标机器。但是,dbdacfx提供程序根本找不到该文件,执行时会出错。web部署似乎并不意味着要安装任意的dacpac。我花了几个星期在谷歌上搜索,结果发现几乎没有什么用处。我没有回答这个问题,希望有人能看到它,并有一个更好的答案。我没有尝试使用dacfx代码,但也许Procmon之类的东西可以帮助您找出它试图在哪里查找dacpac文件。可能有很多信息需要调查,但我以前使用它时发现了对丢失的文件夹/文件的调用。