我们正在使用SQL Server数据工具(SSDT)来管理客户数据库。
从理论上讲,所有数据库都是相同的,但实际上,我们有一些存储过程(和一个触发器),它们会从一个客户变成另一个客户。
我们为所有常见情况创建了一个主SSDT,然后为每个客户创建了一个仅包含特定存储过程(无表)的SSDT。
在特定的SSDT中,我们会收到警告,因为SSDT找不到存储过程中引用的表,但是我们可以忍受(显然,SSDT无法验证表的字段,因为它找不到表)。对于触发器,我们收到一个错误(找不到表),因此数据库项目无法编译。
我们应该如何处理?我想在这种情况下我们不应该一个人。
数据库项目有没有办法引用另一个数据库项目中的对象(表)?
谢谢
伊夫忘了
答案 0 :(得分:1)
在SSDT中,您可以添加另一个数据库项目或dacpac作为参考。 在被引用项目的属性中,您将能够设置被引用数据库的位置,相同服务器相同数据库,相同服务器差异数据库等
https://msdn.microsoft.com/en-us/library/jj684584%28v=vs.103%29.aspx?f=255&MSPPError=-2147217396
答案 1 :(得分:1)
丹尼尔·N(Daniel N)给出了正确的方向,我只解释一下。假设您有一个名为DatabaseA
的数据库项目,它将包含唯一与每个客户100%匹配的对象。然后,创建另一个数据库项目DatabaseB
,并将DatabaseA
包括为“相同实例,相同数据库”。在数据库DatabaseB
中,您可以添加客户特定的对象。然后,您可以通过类似的方式为其他客户创建其他数据库。