【问题标题】:Deploying database changes to a firewalled environment将数据库更改部署到防火墙环境
【发布时间】:2016-06-29 11:47:49
【问题描述】:

我们的情况如下:我们有一个开发环境(本地机器),我们在其上针对 LocalDB 实例进行开发。我们的网络中还有一个测试环境,它有自己的测试数据库。

当我们将 (ASP.NET) 应用程序部署到客户端时,我们使用 TFS 构建服务器来生成我们发送给他们的 Web 部署包,以便他们可以在其验收和生产环境中将包导入 IIS .他们的 IIS 和数据库位于防火墙后面(不幸的是 bigcorp 策略),因此我们无法使用 MSDeploy 直接将我们的代码从我们的构建服务器推送到他们的环境。

一开始我想只让 SSMS 生成更改脚本并将它们与部署包捆绑起来手动执行,但是我找不到将它们自动包含在部署包中的方法(哪种破坏点有一个构建服务器),所以我们考虑使用一个我们可以构建的数据库项目,它为我们创建更改脚本,以及代码的部署包。

我对此有几个问题:

  1. 当我想部署到“离线”环境时,是否可以生成增量更改脚本?我该怎么做呢?这是否意味着我需要与远程服务器建立数据库连接,以便与本地服务器进行比较?
  2. 它如何发现发生了什么变化?它是否在构建过程中查看本地数据库(可能是测试数据库)以查看自上次以来发生了什么变化?还是将更改存储在项目本身中?
  3. 我是否仍然可以在 SSMS 中开发数据库更改,或者我是否需要在数据库项目中的 Visual Studio 中进行更改才能获取它们?

谁能描述一个在我的环境中工作并做我想做的事情的工作流程?

也许不用说,但我们将 TFS 2013 与 Visual Studio 2013 和 SQL Server 2014 一起使用。

【问题讨论】:

  • 如果你在 SSDT 中使用 SQL 项目,你应该给他们你构建的 dacpac 文件,也许还有一个批处理文件,他们可以调整以运行 SQLPackage 并将更改推送到他们的服务器。这将做一个差异来查看需要应用哪些更改。我也会推荐一个发布配置文件来帮助控制这些更改。 SQLPackage 将比较 dacpac 中的预期模式与数据库服务器上的实际模式并生成更改脚本(或只是推送更改)。您将在 SSDT 中进行开发。 schottsql.wordpress.com/2013/10/22/all-ssdt-articles

标签: sql-server deployment msbuild database-project


【解决方案1】:
  1. 是的,您可以在 VS 中使用数据库项目来生成 DACPAC 来表示数据库。
  2. 在部署时,它会将 DACPAC 与目标数据库进行比较并动态创建差异脚本
  3. 使用 VS。起初我们持怀疑态度,但现在真的更喜欢它了。

http://www.dotnetcatch.com/2016/02/10/deploying-a-database-project-with-msdeploy/

【讨论】:

  • 您介意回答我所有的问题吗?你并没有真正解决我的任何问题(至少没有回答我提出的确切问题)。
  • 很抱歉,我以为我回答了您的问题 1-3。如何改进我的答案?哪些问题没有得到解答?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 2011-08-27
  • 2017-02-22
  • 1970-01-01
相关资源
最近更新 更多