【问题标题】:Deploying SSDT with Web Deployment使用 Web 部署部署 SSDT
【发布时间】:2013-09-25 17:52:11
【问题描述】:

我有一个 VS 2012 解决方案,其中包括一个 SSDT 项目 (sqlproj) 和一个 MVC Web 应用程序。我已经设置了许多用于部署 Web 应用程序的配置文件,现在想使用 dbdacfx(或其他什么?)来部署由 SSDT 项目生成的 dacpac。我已经测试了 dacpac 本身,它可以完美运行。然而,弄清楚如何将两者结合起来是难以捉摸的。我见过的使用 Web 部署部署增量数据库更改的每个示例似乎都需要一个数据库实例 - 我如何让它使用我现有的 dacpac?

希望我问的是正确的问题:)

谢谢!

【问题讨论】:

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

标签: msbuild msdeploy sql-server-data-tools sqlproj


【解决方案1】:

假设您已经有了要部署的 dacpac 文件,您可以使用 SQLPackage.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 - 如果新数据库不存在,是否创建。

您可以传入更多选项: http://msdn.microsoft.com/en-us/library/hh550080%28v=vs.103%29.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多