积极答复者
索引试图

问题
-
Create VIEW [dbo].[U_VIEWS] WITH SCHEMABINDING AS SELECT TRC_LFDUP1.RowNumber, TRC_LFDUP1.EventClass, TRC_LFDUP1.SPID, TRC_LFDUP1.StartTime, TRC_LFDUP1.DatabaseID, TRC_LFDUP1.DatabaseName FROM dbo.TRC_LFDUP1
提示成功
但是
因为上面是单表,所以建立索引试图成功
Create VIEW [dbo].[U_VIEWS] WITH SCHEMABINDING AS SELECT TRC_LFDUP1.RowNumber, TRC_LFDUP1.EventClass, TRC_LFDUP1.SPID, TRC_LFDUP1.StartTime, TRC_LFDUP1.DatabaseID, TRC_LFDUP1.DatabaseName FROM dbo.TRC_LFDUP1,dbo.test t t.id=id
提示失败,我想知道多表怎么建立索引试图呢?
星光总能为我指引方向
答案
-
你好,
很抱歉,创建视图索引如果指定了 SCHEMABINDING,所有被引用的对象必须在同一个数据库内。而且,所引用的对象必须有schema.object 两部分组成。详细信息请参阅:http://msdn.microsoft.com/zh-cn/library/ms187956.aspx。
Best Regards,
Stephanie Lv
- 已标记为答案 WeiLin QiaoModerator 2011年5月9日 1:35
-
你好,
是的。索引视图不能跨数据库引用的对象不能跨数据库。因为指定了SCHEMABINDING,此外,不能删除参与了使用 SCHEMABINDING 子句创建的视图的视图或表,除非该视图已被删除或更改而不再具有架构绑定。关于索引视图创建的一些要求,建议你参阅上面我提供的链接。同时参阅:http://technet.microsoft.com/zh-cn/library/ms191432(SQL.90).aspx。
Best Regards,
Stephanie Lv
- 已标记为答案 WeiLin QiaoModerator 2011年5月9日 1:35
全部回复
-
Tried this?
Create VIEW [dbo].[U_VIEWS] WITH SCHEMABINDING AS SELECT TRC_LFDUP1.RowNumber, TRC_LFDUP1.EventClass, TRC_LFDUP1.SPID, TRC_LFDUP1.StartTime, TRC_LFDUP1.DatabaseID, TRC_LFDUP1.DatabaseName FROM dbo.TRC_LFDUP1 join dbo.test t on t.id=TRC_LFDUP1.id
- 已建议为答案 SevenKnights 2011年4月30日 17:06
-
你好,
Create VIEW [dbo].[U_VIEWS] WITH SCHEMABINDING AS SELECT TRC_LFDUP1.RowNumber, TRC_LFDUP1.EventClass, TRC_LFDUP1.SPID, TRC_LFDUP1.StartTime, TRC_LFDUP1.DatabaseID, TRC_LFDUP1.DatabaseName FROM dbo.TRC_LFDUP1,dbo.test t t.id=id
>>消息 208,级别 16,状态 1,过程 U_VIEWS,第 1 行对象名 'dbo.test' 无效。
你在创建索引视图的时候,提示的错误信息是你的数据库不存在 'dbo.test' 这个数据库表,你需要先创建它然后再创建索引视图。关于索引视图的创建,你可以参考:通过 SQL Server 2005 索引视图提高性能。
如果你还是不能解决问题,请把相关联的表结构的CREATE的 DDL 语句及测试数据贴上来,以便我们更好地分析问题。
Best Regards,
Stephanie Lv
-
你好,很感谢你的提醒,这个问题我解决了,那我随之而来又有个问题了
如果我是跨数据库进行创建试图索引应该怎么解决呢,如:
dbo.TRC_LFDUP1 在 ta 数据库下
dbo.dbo.test 在 tb 数据库下
我应该怎么创建这个试图索引呢?
Create VIEW [dbo].[U_VIEWS] WITH SCHEMABINDING AS
SELECT TRC_LFDUP1.RowNumber, TRC_LFDUP1.EventClass, TRC_LFDUP1.SPID, TRC_LFDUP1.StartTime, TRC_LFDUP1.DatabaseID, TRC_LFDUP1.DatabaseName FROM dbo.TRC_LFDUP1,tb.dbo.test t t.id=id
因为名称 ',tb.dbo.test ' 对于架构绑定无效。名称必须由两部分构成,并且对象不能引用自身。
星光总能为我指引方向 -
你好,
很抱歉,创建视图索引如果指定了 SCHEMABINDING,所有被引用的对象必须在同一个数据库内。而且,所引用的对象必须有schema.object 两部分组成。详细信息请参阅:http://msdn.microsoft.com/zh-cn/library/ms187956.aspx。
Best Regards,
Stephanie Lv
- 已标记为答案 WeiLin QiaoModerator 2011年5月9日 1:35
-
你好,
是的。索引视图不能跨数据库引用的对象不能跨数据库。因为指定了SCHEMABINDING,此外,不能删除参与了使用 SCHEMABINDING 子句创建的视图的视图或表,除非该视图已被删除或更改而不再具有架构绑定。关于索引视图创建的一些要求,建议你参阅上面我提供的链接。同时参阅:http://technet.microsoft.com/zh-cn/library/ms191432(SQL.90).aspx。
Best Regards,
Stephanie Lv
- 已标记为答案 WeiLin QiaoModerator 2011年5月9日 1:35