joj*_*ojo 31 t-sql database sql-server view
我有一个特例,
例如,ta
在数据库表中A
,它存储了我购买的所有产品
table ta(
id,
name,
price
)
Run Code Online (Sandbox Code Playgroud)
在tb
数据库表中B
,它包含人们可以购买的所有产品
table tb(
id,
name,
price
....
)
Run Code Online (Sandbox Code Playgroud)
我可以在数据库中创建一个视图A
来列出我还没买过的所有产品吗?
Dav*_*all 43
是的,你可以 - t-sql语法与任何其他跨数据库调用相同(例如在存储过程中).
要在第二个数据库中引用表,您只需:
[数据库名].[架构].[表名]
所以你最终会得到像这样的东西
CREATE VIEW [dbo].[YourView]
as
select
a.ID,
a.SomeInfo,
b.SomeOtherInfo
from TableInA a
join DatabaseB.dbo.TableInB b
on -- your join logic goes here
Run Code Online (Sandbox Code Playgroud)
请注意,这只能在同一台服务器上运行 - 如果您的数据库位于不同的服务器上,则需要创建链接服务器.
是的,视图可以引用三个命名对象:
create view A.dbo.viewname as
select ... from A.dbo.ta as ta
join B.dbo.tb as tb on ta.id = tb.id
where ...
Run Code Online (Sandbox Code Playgroud)
由于备份/恢复一致性,参照完整性问题以及可能的镜像故障转移,交叉数据库查询将会出现问题,但这些问题是将数据拆分为dbs所固有的.