【发布时间】:2016-06-29 11:47:49
【问题描述】:
我们的情况如下:我们有一个开发环境(本地机器),我们在其上针对 LocalDB 实例进行开发。我们的网络中还有一个测试环境,它有自己的测试数据库。
当我们将 (ASP.NET) 应用程序部署到客户端时,我们使用 TFS 构建服务器来生成我们发送给他们的 Web 部署包,以便他们可以在其验收和生产环境中将包导入 IIS .他们的 IIS 和数据库位于防火墙后面(不幸的是 bigcorp 策略),因此我们无法使用 MSDeploy 直接将我们的代码从我们的构建服务器推送到他们的环境。
一开始我想只让 SSMS 生成更改脚本并将它们与部署包捆绑起来手动执行,但是我找不到将它们自动包含在部署包中的方法(哪种破坏点有一个构建服务器),所以我们考虑使用一个我们可以构建的数据库项目,它为我们创建更改脚本,以及代码的部署包。
我对此有几个问题:
- 当我想部署到“离线”环境时,是否可以生成增量更改脚本?我该怎么做呢?这是否意味着我需要与远程服务器建立数据库连接,以便与本地服务器进行比较?
- 它如何发现发生了什么变化?它是否在构建过程中查看本地数据库(可能是测试数据库)以查看自上次以来发生了什么变化?还是将更改存储在项目本身中?
- 我是否仍然可以在 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