2014-09-26 31 views
4

我想编写两个SSDT项目之间的模式比较产生的更改,但当源和目标都是SSDT项目时,“生成脚本”按钮呈灰色/禁用。脚本模式比较两个SSDT项目之间的变化

“更新”按钮不变灰。如果我想直接更新,我可以。但是我需要这些脚本,因为我正在使用这两个不在同一网络上的管理两个数据库环境(但需要与db模式和代码升级保持同步)。另外,为了验证和加强,如果我的目标是真实的数据库而不是项目,我可以生成脚本。它只有当目标是一个我不能生成脚本的项目时。不幸的是,我不能直接连接到目标数据库。

我真的很想避免为了生成脚本而在本地为每个客户端数据库环境创建数据库副本(我已经为每个客户端分配了SSDT项目)。

这是故意限制吗?似乎很奇怪。我不能成为第一个必须管理我无法直接从我的开发机器连接到的客户端架构的人。

+0

我觉得在项目之间生成差异脚本是没有意义的。您不会像使用数据库那样更新项目。你可以创建你的调试版本,并对此做一个比较? – 2014-09-26 14:08:08

回答

4

根据Microsoft's page on Schema Compare(强调):

“你可以从架构直接更新的目标,如果目标是数据库或项目比较窗口,或者如果目标可以生成一个更新脚本是一个数据库或数据库文件

您描述的行为似乎是功能如何工作。

但是,如果你可以建立/编译你的项目,这将产生.dacpac files(又名数据库文件),它可以比较并生成一个脚本,或者使用的模式比较,也出现command line version of SSDT (sqlpackage.exe)似乎支持这个来源和.dacpac的目标。

希望有所帮助。

+0

我们采取了避免这种限制的环境战略,采取了不同的方向。很高兴知道这个限制对于未来的项目来说是有的。 – user2245759 2014-10-29 14:45:15