2

一点背景。我有一个基本应用程序,大多数客户将其用作标准。然而,一些客户有小的代码和数据库定制。这些客户端中的每一个都有自己的分支,维护可能很棘手。

我想将所有这些整合到一个单一的数据库结构中(不是一个单一的数据库——我们不是在做多租户),以便以更统一的方式应用升级。我仍处于概念验证阶段,但我要走的路线是让标准对象保留在它们当前存在的模式中(主要是 dbo),并让自定义对象位于每个客户端的模式中。

例如,我可以有 dbo.users 和 client1.users 有一些额外的列。如果我将客户端的默认架构设置为“client1”,则以下查询

SELECT * FROM users

将根据连接的登录名从 client1 模式或 dbo 模式返回数据。这对于我想要实现的目标来说绝对是完美的。

我遇到的问题是视图。我有很多在 dbo 模式中的视图,并引用了用户表。无论我以哪个用户身份连接到数据库,这些视图总是从 dbo.users 中选择。

所以我猜我的问题是:我可以在视图中的表前面加上一些变量,比如“DEFAULT”吗?例如

SELECT u.username, u.email, a.level
FROM DEFAULT.users u INNER JOIN accessLevels a ON u.accessID = a.accessID

如果这是不可能的,而且我完全是在找错树,你对我如何实现我打算做的事情有什么建议吗?

非常感谢。

4

1 回答 1

0

只需引用视图所在的架构的名称...

选择一个。,乙。 从 schema1.TABLEA A 在 A.ID = B.ID 上连接 schema2.TABLEB B

于 2013-09-03T22:14:03.450 回答