creación de indíce sobre vista

Pedro
19 de Agosto del 2004
hola, he intentado crear un indíce sobre una vista y al ejecutar la instrucción me devuelve este mensaje:
"Cannot create index on view 'VentaCSRview' because the view is not schema bound."
He buscado documentación al respecto y no he encontrado nada.Gracias por la atención.


Isa? Islas
19 de Agosto del 2004
Para poder crear INDICES en vistas, se deben serguir ciertas reglas:

a.. Las opciones ANSI_NULLS y QUOTED_IDENTIFIER deben establecerse en ON
cuando se ejecute la instrucción CREATE VIEW. La función OBJECTPROPERTY
presenta estos resultados para las vistas mediante las propiedades
ExecIsAnsiNullsOn o ExecIsQuotedIdentOn.


b.. La opción ANSI_NULLS debe establecerse en ON para poder ejecutar todas
las instrucciones CREATE TABLE, que crean tablas a las que se hace
referencia en la vista.


c.. La vista no debe hacer referencia a ninguna otra vista, sólo a tablas
base.


d.. Todas las tablas base a las que hace referencia la vista deben estar
en la misma base de datos que ésta y tener su mismo propietario.


e.. Esta vista se debe crear con la opción SCHEMABINDING. Mediante la
opción SCHEMABINDING se asocia la vista al esquema de las tablas base
subyacentes.


f.. Las funciones definidas por el usuario a las que se hace referencia en
la vista se deben crear con la opción SCHEMABINDING.


g.. Es preciso utilizar nombres compuestos de dos partes para hacer
referencia a las tablas y funciones definidas por el usuario. No se permiten
nombres de una, tres y cuatro partes.


h.. Todas las funciones a las que se hace referencia en las expresiones de
la vista deben ser deterministas. La propiedad IsDeterministic de la función
OBJECTPROPERTY informa de si una función definida por el usuario es
determinista. Para obtener más información, consulte Funciones deterministas
y no deterministas.


i.. La instrucción SELECT de la vista no puede contener los siguientes
elementos de sintaxis Transact-SQL:
a.. La lista de selección no puede utilizar la sintaxis * o table_name.*
para especificar columnas. Los nombres de columnas deben especificarse
explícitamente.


b.. Un nombre de columna de tabla utilizado como una expresión sencilla
no puede especificarse en más de una columna de vista. Se puede hacer
referencia a una columna varias veces siempre que todas las referencias, o
todas menos una, a la columna formen parte de una expresión compleja o de un
parámetro de una función. Por ejemplo, esta lista de selección no es válida:
SELECT ColumnA, ColumnB, ColumnA
Estas listas de selección sí son válidas:

SELECT ColumnA, AVG(ColumnA), ColumnA + Column B AS AddColAColB

SELECT SUM(ColumnA), ColumnA % ColumnB AS ModuloColAColB
c.. Una tabla derivada.


d.. Funciones de conjunto de filas.


e.. UNION, operador.


f.. Subconsultas.


g.. Combinaciones externas y autocombinaciones.


h.. Cláusula TOP.


i.. Cláusula ORDER BY.


j.. DISTINCT, palabra clave.


k.. COUNT(*) (se permite COUNT_BIG(*))



Isa? Islas
19 de Agosto del 2004
El que busca, encuentra:

http://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/indexvw.mspx#XSLTsection126121120120

http://www.ilopia.com/Articles/SQLServer/Views.aspx