sqlserver 2008 视图 索引创建

标题: Microsoft SQL Server Management Studio
------------------------------

创建 对于 索引“ddd”失败。  (Microsoft.SqlServer.Smo)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1+((KJ_RTM).100402-1540+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=创建+Index&LinkId=20476

------------------------------
其他信息:

执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)

------------------------------

无法对视图 'visit_channel_doc' 创建 索引,因为该视图未绑定到架构。 (Microsoft SQL Server,错误: 1939)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=1939&LinkId=20476

      sqlserver 2008 视图索引创建 在设计视图创建的话 默认 绑定到架构为否,TOP规范为是,这样再创建视图索引时就会出现视图未绑定到架构的错误信息,所以要在属性窗口改下 绑定到架构为是,TOP规范为否,还有就是count函数要变为COUNT_BIG函数;

记着创建唯一聚集索引 好处大大滴(联机丛书上有解说嘿嘿...)

视图中的 SELECT 语句不能包含下列 Transact-SQL 语法元素:


指定列的 * 或 table_name.* 语法。必须明确给出列名。


不能在多个视图列中指定用作简单表达式的表列名。如果对列的所有(或除了一个引用之外的所有)引用是复杂表达式的一部分或是函数的一个参数,则可以多次引用该列。例如,下面的 SELECT 列表无效:

 复制代码 
SELECT ColumnA, ColumnB, ColumnA
 
下面的 SELECT 列表有效:

 复制代码 
SELECT SUM(ColumnA) AS SumColA, ColumnA % ColumnB AS ModuloColAColB, COUNT_BIG(*) AS cBig FROM dbo.T1 GROUP BY ModuloColAColB
 

在 GROUP BY 子句中使用的列的表达式或基于聚合结果的表达式。


派生表。


公用表表达式 (CTE)。


行集函数。


UNION、EXCEPT 或 INTERSECT 运算符。


子查询。


外联接或自联接。


TOP 子句。


ORDER BY 子句。


DISTINCT 关键字。


COUNT(*)(允许 COUNT_BIG(*)。)


AVG、MAX、MIN、STDEV、STDEVP、VAR 或 VARP 聚合函数。如果在引用索引视图的查询中指定了 AVG(expression),则当视图 SELECT 列表中包含 SUM(expression) 和 COUNT_BIG(expression) 时,优化器可经常计算所需结果。例如,索引视图 SELECT 列表不能包含表达式 AVG(column1)。如果视图 SELECT 列表包含表达式 SUM(column1) 和 COUNT_BIG(column1),则 SQL Server 可以计算引用视图并指定 AVG(column1) 的查询的平均数。


引用可为空表达式的 SUM 函数。


包括排名或聚合开窗函数的 OVER 子句。


CLR 用户定义聚合函数。


全文谓词 CONTAINS 或 FREETEXT。


COMPUTE 或 COMPUTE BY 子句。


CROSS APPLY 或 OUTER APPLY 运算符。


PIVOT 或 UNPIVOT 运算符。


表提示(仅应用于 90 或更高的兼容级别)。


联接提示。


对 Xquery 表达式的直接引用。可以接受间接引用,例如位于绑定到架构的、用户定义的函数内部的 Xquery 表达式。


如果指定了 GROUP BY,则视图选择列表必须包含 COUNT_BIG(*) 表达式,且视图定义不能指定 HAVING、ROLLUP、CUBE 或 GROUPING SETS。

详细可参考sqlserver联机丛书中的“创建索引视图 ”内容

猜你喜欢

转载自wmswu.iteye.com/blog/1387756