我正在使用Visual中的数据库项目。
在我的场景中,有几个客户使用不同版本的数据库。
例如,在版本5中的客户,在版本7中的另一个客户。
我提供了版本8的更新。
客户端版本5应该在运行更新到版本8的脚本之前运行“累积”脚本(更新到版本6和7)。
客户端版本7应该运行升级到版本8的内容。
现在有什么自动的方法可以用SSDT?来完成这个任务吗?
发布于 2015-02-04 12:43:05
使用msbuild: /p:GetVersion=CXXXX
表单VS,在发布之前获取特定版本(右键单击解决方案资源管理器中的项目)。
您可以针对这两个不同的目标运行此操作,并且将为指定的目标创建发布脚本(每个目标一个)。
如果使用dacpac,则通过与目标进行比较,脚本将在部署时从dacpac自动生成。如果yo想要部署相同的版本,您可以在两个目标上使用相同的dacpac文件,生成的脚本将专门为每个目标创建。
发布于 2015-02-05 09:46:57
当使用SSDT时,部署数据库累积“版本”的概念就消失了(我认为)。必须理解的SSDT的基本概念是声明式数据库开发。我个人对声明性数据库开发的定义:
定义希望数据库架构处于何种状态,而不是如何使其进入该状态。SSDT中的发布引擎将负责使数据库处于这种状态。
简单的示例,您目前在数据库中有一个名为Person的表,并且希望添加一个名为Person.MiddleName的列。在SSDT中定义新列,在发布时,SSDT将发出类似于以下内容的内容:
ALTER TABLE [Person] ADD COLUMN [MiddleName]关键是您不必编写SQL语句,SSDT为您编写并执行它。在这个场景中,数据库版本的概念消失了。您只需要将数据库更新到SSDT项目中定义的状态。希望这能有所帮助。
发布于 2015-02-04 12:45:35
您应该提供dacpac,这是构建的输出,然后给他们部署。
您可以通过SSMS手动部署它,或者给它们一个运行sqlpackage.exe的命令行--这可以执行更新,也可以生成一个脚本来升级他们的数据库。
https://stackoverflow.com/questions/28321262
复制相似问题