这是问题......
我在同一个SQL Server 2008 R2实例上有2个数据库。
DB-One
用于网站,DB-two
是每天从转储中更新的datadumb。
现在我想在DB-One
上创建一个索引视图,我在DB 2
引用了两个表。
所以我的查询就像是
SELECT
TBA.COLA, TBB.COlA
FROM
DB-ONE.TBA.COLA A
JOIN
DB-TWO.TBB.COLA B ON (A.Id= B.Id)
现在这个查询工作正常,显然......但是如果我尝试使用以下语法创建一个视图,它会给我一个错误
CREATE VIEW TESTVIEW WITH SCHEMABINDING AS
错误:
无法对视图'TESTVIEW'进行架构绑定,因为名称'DB-ONE.TBA.COLA A'对于架构绑定无效。名称必须采用两部分格式,对象不能引用自身。
因此,如果这种方法不可行,那么任何人都可以提出任何替代方案吗?
答案 0 :(得分:4)
如错误消息中所述,使用架构绑定时#34;名称必须采用两部分格式"这意味着它们必须采用[schema]。[tablename]格式,因此这些表不能位于2个独立的数据库中。
运行一次
USE [DB-ONE]
GO
CREATE TABLE dbo.myReport(/*column structure of your indexed view goes here*/);
go
--index table as needed
go
然后安排在每日"数据转储"之后从DB-ONE运行加载到DB-TWO:
use [DB-ONE]
GO
insert into dbo.myReport(/*list of columns*/)
SELECT TBA.COLA, TBB.COlA
FROM DB-ONE.TBA.COLA A
JOIN DB-TWO.TBB.COLA B ON (A.Id= B.Id)
;