SSDT循环参考:复杂项目

时间:2018-08-20 09:38:31

标签: sql-server sql-server-data-tools circular-reference

我有一个相当复杂的设置,服务器上有八个数据库,每个数据库互相引用(关于每个数据库互相引用),让位于相当复杂的网站。该设计远非理想,但不幸的是,这是我们必须处理的事情。

我们需要创建一个SSDT解决方案来简化CI / CD

整个项目都需要从头开始部署到新实例上,因此我想尽一切办法,因为我对如此规模的项目的SSDT知识了解有限。

我考虑的方法如下: 1)将对象拆分为共享对象,并引用共享对象。这似乎是一场噩梦,因为复杂的引用网络需要不同的层次。 (共享对象引用其他共享对象)。另外,我们如何在空白服务器上部署这样的项目? 2)为被其他对象引用的项目中的每个对象创建存根,并使其成为数据库引用。这似乎是最简单的选择,尽管似乎如果存根所基于的对象被更改,则还需要维护存根,否则项目将中断。这是正确的假设吗? 3)仅为需要编译的项目创建存根(例如,其他数据库中的视图引用的表),并忽略警告引用。我倾向于这条路线,因为存根会更小并且项目更易于维护,但是我不想忽略参考警告。

如果我们使用存根选项进行部署,是否需要先部署存根,然后在成功部署后将其删除?

另一个(更直接的问题)。部署登录名,用户和对象权限的最佳方法是什么?

感谢回复。

1 个答案:

答案 0 :(得分:0)

这个问题太广泛了,但是这些建议很少:

  1. 循环引用不能做任何事情。有一些解决方法,但是所有这些方法都是“ hacky”的,并且很可能会引入更多的问题,而不是解决您的问题。因此,请尝试以仅一种方式依赖的方式移动对象;
  2. 对所有跨数据库对象使用同义词,因此应该在数据库外部没有直接引用;
  3. 我同意Peter Schott的观点,现在最好忽略登录名和用户,因为在SSDT中处理登录会有些痛苦,并且您需要在SSDT方面具有丰富的专业知识才能使其正常工作。