sqlserver 视图创建数据库索引分类为什么要先绑定架构

SQL Server中创建视图索引 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 21时,
你正在使用一个 SQL Server 2005 数据库,它包含一个名为 Customers 的表。其中 Customers 表包含如下的列定义:
&&&&&&&&&&&&&
Create Table Customers
CustomerID Int ,
CompanyName Varchar(50) ,
FirstName Varchar(20) ,
LastName Varchar(20) ,
Picture Varbinary(max) ,
Address1 Varchar(30) ,
Address2 Varchar(30) ,
City Varchar(30) ,
StateProvince Char(2) ,
PostalCode Varchar(10) ,
CountryCode Char(2)
你使用以下 Transact-SQL 语句创建一个名为 v_Customer 的视图。
CREATE VIEW v_Customer AS&
SELECT& CustomerID, CompanyName, FirstName, LastName, Picture&&
FROM& Customers。
你想要在 v_ Customer 视图中创建一索引。在创建索引前,还需要修改此 Transact-SQL 语句。
应采取举措?
代码片段(1)
1.&[代码][SQL]代码&&&&
--表名包含模式名。
--包含 WITH
SCHEMABINDING 语句
CREATE VIEW dbo.v_Customer WITH SCHEMABINDING AS
CustomerID, CompanyName, FirstName, LastName, Picture
dbo.Customers
开源中国-程序员在线工具:
开源从代码分享开始
DTC2的其它代码无法对视图创建索引,因为该视图未绑定到架构的解决方案
无法对视图创建索引,因为该视图未绑定到架构的解决方案
在创建视图后创建索引
提示无法对视图创建索引,因为该视图未绑定到架构的解决方案
大家都知道视图了是可以建索引的,当然是有一定限制的,想在视图上建索引首先在创建视图时要这样写
& www.2cto.com &
create view 视图名称
with schemabinding
你视图的Sql
看下面的例子
比如 create view V_Userinfo
with schemabinding
select Userinfo *,UserClass * &from Userinfo inner join UserClass on uid=cid
& www.2cto.com &
注意,表的表达式必须使用两段式 dbo.mytable 否则会报
&名称必须由两部分构成,并且对象不能引用自身。&
而且必须先建一个唯一的聚集所引,否则也是不能进行接下为的所引建立的。
也不是说必须要先用一个唯一的聚集所引才行哦
如果大家想正常使用视图所引的话就保证你的表中在建完视图后有一个列是唯一的哦寻高手,视图里是union的sql,但是建立不了视图索引了
[问题点数:100分,结帖人seesea125]
本版专家分:10
结帖率 99.4%
CSDN今日推荐
本版专家分:96440
2010年2月 总版技术专家分月排行榜第三
2012年7月 荣获微软MVP称号
2010年2月 MS-SQL Server大版内专家分月排行榜第一2009年5月 MS-SQL Server大版内专家分月排行榜第一
2012年6月 MS-SQL Server大版内专家分月排行榜第二2010年8月 MS-SQL Server大版内专家分月排行榜第二
本版专家分:10
本版专家分:72573
2010年 总版技术专家分年内排行榜第七
2010年7月 总版技术专家分月排行榜第二2010年6月 总版技术专家分月排行榜第二
2010年5月 总版技术专家分月排行榜第三
2010年8月 PowerBuilder大版内专家分月排行榜第一2010年8月 MS-SQL Server大版内专家分月排行榜第一2010年7月 MS-SQL Server大版内专家分月排行榜第一2010年6月 PowerBuilder大版内专家分月排行榜第一2010年6月 MS-SQL Server大版内专家分月排行榜第一2010年5月 PowerBuilder大版内专家分月排行榜第一2010年4月 PowerBuilder大版内专家分月排行榜第一2009年10月 PowerBuilder大版内专家分月排行榜第一2009年7月 PowerBuilder大版内专家分月排行榜第一
本版专家分:314107
2012年 荣获名人称号
2011年 总版技术专家分年内排行榜第四2010年 总版技术专家分年内排行榜第九2009年 总版技术专家分年内排行榜第八
2011年10月 总版技术专家分月排行榜第一
2011年12月 总版技术专家分月排行榜第二2011年9月 总版技术专家分月排行榜第二2009年11月 总版技术专家分月排行榜第二
本版专家分:14568
匿名用户不能发表回复!|
其他相关推荐SqlServer在视图上创建索引的条件
SqlServer在视图上创建索引的条件
在视图上创建索引需要三个条件:
一、视图必须绑定到架构。
要做到这点,在 CREATE VIEW 语句中,必须加上 WITH SCHEMABINDING,如果是使用企业管理器,则在设计界面的空白处点击右键,属性,选中&绑定到架构&。
二、索引必须是唯一索引。 &www.2cto.com &
要做到这点,在 CREATE INDEX 中必须指定 UNIQUE。
三、索引必须是聚集索引。
要做到这点,在 CREATE INDEX 中必须指定 CLUSTERED。
CREATE VIEW viewFoo WITH SCHEMABINDING
SELECT id...
CREATE UNIQUE CLUSTERED INDEX index_viewFoo ON viewFoo(id)
***************************************************************
视图的要求&
在视图上创建聚集索引之前,该视图必须满足下列要求: &&
当执行 & CREATE & VIEW & 语句时,ANSI_NULLS & 和 & QUOTED_IDENTIFIER & 选项必须设置为 & ON。OBJECTPROPERTY & 函数通过 & ExecIsAnsiNullsOn & 或 & ExecIsQuotedIdentOn & 属性为视图报告此信息。 &&
为执行所有 & CREATE & TABLE & 语句以创建视图引用的表,ANSI_NULLS & 选项必须设置为 & ON。 &&
视图不能引用任何其它视图,只能引用基表。 &&
& www.2cto.com &
视图引用的所有基表必须与视图位于同一个中,并且所有者也与视图相同。 &&
必须使用 & SCHEMABINDING & 选项创建视图。SCHEMABINDING & 将视图绑定到基础基表的架构。 &&
必须已使用 & SCHEMABINDING & 选项创建了视图中引用的用户定义的函数。 &&
表和用户定义的函数必须由 & 2 & 部分的名称引用。不允许使用 & 1 & 部分、3 & 部分和 & 4 & 部分的名称。 &&
视图中的表达式所引用的所有函数必须是确定性的。OBJECTPROPERTY & 函数的 & IsDeterministic & 属性报告用户定义的函数是否是确定性的。有关更多信息,请参见确定性函数和非确定性函数。 &&
& www.2cto.com &
视图中的 & SELECT & 语句不能包含下列 & Transact-SQL & 语法元素: &&
选择列表不能使用 & * & 或 & table_name.* & 语法指定列。必须显式给出列名。 &&
不能在多个视图列中指定用作简单表达式的表的列名。如果对列的所有(或只有一个例外)引用是复杂表达式的一部分或是函数的一个参数,则可多次引用该列。例如,下列选择列表是非法的: &&
SELECT & ColumnA, & ColumnB, & ColumnA&
执行 & CREATE & INDEX & 语句的用户必须是视图的所有者。 &&
当执行 & CREATE & INDEX & 语句时,下列 & SET & 选项必须设置为 & ON: &&
ANSI_NULLS & & www.2cto.com &
ANSI_PADDING &&
ANSI_WARNINGS &&
ARITHABORT &&
CONCAT_NULL_YIELDS_NULL &&
QUOTED_IDENTIFIERS &&
必须将选项 & NUMERIC_ROUNDABORT & 选项设置为 & OFF。 &&
视图不能包含 & text、ntext & 或 & image & 列,即使在 & CREATE & INDEX & 语句中没有引用它们。 &&
如果视图定义中的 & SELECT & 语句指定了一个 & GROUP & BY & 子句,则唯一聚集索引的键只能引用在 & GROUP & BY & 子句中指定的列。无法对视图创建索引,因为该视图未绑定到架构 SQLServer
做sqlserver实验时,为一个视图建立索引时出现了“无法对视图 'V2' 创建 索引,因为该视图未绑定到架构”的错误,到网上搜了一下,需要为视图加上一条属性with SCHEMABINDING,于是修改视图alter view v2
with SCHEMABINDING
as SQL语句
结果出现如下错误:
”无法将 视图'V3' 绑定到架构,因为名称 'Student' 对于架构绑定无效。名称必须由两部分构成,并且对象不能引用自身“
百度之后,发现需要在表的前面加上dbo.表名,如下
alter view v2
with SCHEMABINDING
select dbo.Score.cno,cname,dbo.Score.sno,sname,degree
from dbo.Course,dbo.Score,dbo.Student
where dbo.Score.sno=dbo.Student.sno and dbo.Score.cno=dbo.Course.cno and dbo.Course.cno='01'OK!
MSSQL无法对视图创建 索引,因为该视图未绑定到架构
创建索引视图时提示架构绑定无效,名称必须由两部分构成
SQL Server:视图的架构刷新和绑定
无法对视图创建索引,因为该视图未绑定到架构的解决方案
对视图创建索引
无法对视图创建聚集索引
sqlserver 建立索引视图各问题!
视图上无法创建索引
SQL Server:创建索引视图
没有更多推荐了,

我要回帖

更多关于 什么是视图和索引 的文章

 

随机推荐