如何在sql server中为视图创建主键?

时间:2012-07-03 18:55:21

标签: sql sql-server-2008

假设我在同一个实例下有两个数据库DB1DB2tab2中有一个表DB2。 我在DB1中创建了一个视图,以便从tab2获取DB2

CREATE VIEW [dbo].[Tab2]
AS
SELECT *
FROM  DB2.dbo.Tab2

然后我尝试在tab2中为DB1创建一个密钥:

CREATE UNIQUE CLUSTERED INDEX tab2_Key
ON dbo. tab2 (id2)

这会引发以下错误:

  

Msg 1939,Level 16,State 1,Line 1
无法在视图上创建索引   'Tab2',因为视图不是架构绑定。

如何解决此问题?

1 个答案:

答案 0 :(得分:4)

嗯,有一个带有索引的视图的规则(一些来自模式绑定所需规则的级联)。

其中一条规则是视图不能包含SELECT *。另一个是它必须与它引用的对象存在于同一个数据库中。

我可以为您列出规则,但它们列在文档herehere中。而且我不认为告诉你规则无论如何都会取得很大成就。

您能否准确解释一下您认为此视图上的聚集索引会带来哪些好处?有人告诉你索引视图“更快”吗?在这种情况下,我看不出对DB2.dbo.Tab2的查询会做什么,特别是如果该表已经在id2上有索引。这只是在几个方面闻到了错误......