假设我在同一个SQL服务器(2012)上有4个数据库,名为Business,Customer1,Customer2和Config(不是真实姓名,只是为了保持示例清晰)。
几个'客户'数据库可以属于同一个“商业”,这种关系在“配置”中定义。数据库中。
我需要在商业'数据库,并在Customer数据库中访问它。例如,
USE Business
SELECT * FROM Users
将产生与
相同的结果USE Customer1
SELECT * FROM Users
将产生与
相同的结果USE Customer2
SELECT * FROM Users
我认为使用视图很容易实现,因此在每个客户数据库中都是:
CREATE VIEW Users --(I know this naming is wrong, and I should clearly name the view as such, but I'm trying to limit impact to existing code)
AS
SELECT * FROM [Business]..Users
我遇到的问题是会出现大量的商业问题。数据库,所以我真的需要我的观点来注意商业 - 客户关系,并且类似于:
CREATE VIEW Users
AS
DECLARE @BusinessDB varchar(50) =
(SELECT BusinessDB FROM Config..Business where CustomerID = (SELECT Value FROM SysInfo where KeyName = 'CustomerID'))
EXEC('SELECT * FROM ['+@BusinessDB+']..Users')
除了我不能在视图中声明/使用变量。
有没有人知道如何实现我的目标,或者我是否必须为每项业务保持略微不同的观点?
由于