indice sorbre viste

16/05/2005 - 19:01 por Eduardo De Luca | Informe spam
Amigos, estoy tratando de montar un indice sobre una vista , sin aun poder
hacerlo.

El codigo de la vista
create view in_alta_automatica


as

select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_prc
union all
select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_pdc
union all
select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_tcv
union all
select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_mov


luego le "intento crear el indice"
CREATE INDEX [IX_in_alt_tabla] ON [dbo].[in_alta_automatica]([alt_tabla])
ON [PRIMARY]


y este es el mensaje de error:

Server: Msg 1939, Level 16, State 1, Line 1
Cannot create index on view 'in_alta_automatica' because the view is not
schema bound.

que estoy haciendo mal????

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
16/05/2005 - 20:47 | Informe spam
Agrega la opcion siguiente:

create view in_alta_automatica
with SCHEMABINDING
as
...
go


AMB


"Eduardo De Luca" wrote:

Amigos, estoy tratando de montar un indice sobre una vista , sin aun poder
hacerlo.

El codigo de la vista
create view in_alta_automatica


as

select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_prc
union all
select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_pdc
union all
select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_tcv
union all
select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_mov


luego le "intento crear el indice"
CREATE INDEX [IX_in_alt_tabla] ON [dbo].[in_alta_automatica]([alt_tabla])
ON [PRIMARY]


y este es el mensaje de error:

Server: Msg 1939, Level 16, State 1, Line 1
Cannot create index on view 'in_alta_automatica' because the view is not
schema bound.

que estoy haciendo mal????



Respuesta Responder a este mensaje
#2 Eduardo De Luca
16/05/2005 - 21:53 | Informe spam
Alejandro Gracias por tu ayuda , luego de agregarle la sentencia que me
nombre , al querer crear el indice me arroja el sgte mensaje:

Cannot create index on view 'in_alta_automatica'. It does not have a unique
clustered index.

Las otras tres tablas poseen pk , y un indice . las mismas no los tienen que
poseer para poder crearlos en las vistas??


saludos



"Alejandro Mesa" escribió en el
mensaje news:
Agrega la opcion siguiente:

create view in_alta_automatica
with SCHEMABINDING
as
...
go


AMB


"Eduardo De Luca" wrote:

Amigos, estoy tratando de montar un indice sobre una vista , sin aun
poder
hacerlo.

El codigo de la vista
create view in_alta_automatica


as

select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_prc
union all
select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_pdc
union all
select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_tcv
union all
select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_mov


luego le "intento crear el indice"
CREATE INDEX [IX_in_alt_tabla] ON
[dbo].[in_alta_automatica]([alt_tabla])
ON [PRIMARY]


y este es el mensaje de error:

Server: Msg 1939, Level 16, State 1, Line 1
Cannot create index on view 'in_alta_automatica' because the view is not
schema bound.

que estoy haciendo mal????



Respuesta Responder a este mensaje
#3 Isaias Islas
17/05/2005 - 02:15 | Informe spam
(Esto ya lo habia posteado)

REGLAS PARA CREAR VISTAS INDIZADAS

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(*))
Respuesta Responder a este mensaje
#4 Alejandro Mesa
17/05/2005 - 13:56 | Informe spam
Eduardo,

Isaias posteo los requerimientos que debe cumplir una vista para que esta se
pueda indexar. Te comento que el primer indice que debes crear tiene que ser
un indice clustered unico para que la vista se materialize, osea que su data
sea escrita hacia el disco y por lo tanto se comporte como una tabla.


AMB

"Eduardo De Luca" wrote:

Alejandro Gracias por tu ayuda , luego de agregarle la sentencia que me
nombre , al querer crear el indice me arroja el sgte mensaje:

Cannot create index on view 'in_alta_automatica'. It does not have a unique
clustered index.

Las otras tres tablas poseen pk , y un indice . las mismas no los tienen que
poseer para poder crearlos en las vistas??


saludos



"Alejandro Mesa" escribió en el
mensaje news:
> Agrega la opcion siguiente:
>
> create view in_alta_automatica
> with SCHEMABINDING
> as
> ...
> go
>
>
> AMB
>
>
> "Eduardo De Luca" wrote:
>
>> Amigos, estoy tratando de montar un indice sobre una vista , sin aun
>> poder
>> hacerlo.
>>
>> El codigo de la vista
>> create view in_alta_automatica
>>
>>
>> as
>>
>> select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_prc
>> union all
>> select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_pdc
>> union all
>> select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_tcv
>> union all
>> select alt_tabla, alt_clave,alt_id from in_e1_alta_aut_mov
>>
>>
>> luego le "intento crear el indice"
>> CREATE INDEX [IX_in_alt_tabla] ON
>> [dbo].[in_alta_automatica]([alt_tabla])
>> ON [PRIMARY]
>>
>>
>> y este es el mensaje de error:
>>
>> Server: Msg 1939, Level 16, State 1, Line 1
>> Cannot create index on view 'in_alta_automatica' because the view is not
>> schema bound.
>>
>> que estoy haciendo mal????
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida