SSDT 通函参考:复杂项目

SSDT Circular reference: Complex project

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

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

整个项目需要在一个新实例上从头开始部署,我正在努力解决这个问题,因为我对这种规模的项目的 SSDT 知识有限。

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

如果我们使用stubs选项部署,是否需要先部署stubs,部署成功后再删除?

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

感谢您的回复。

这个问题太宽泛了,但这些是一些建议:

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