INDECES sobre Vistas

01/06/2004 - 01:40 por Isaías | Informe spam
Hola

Necesito crear un INDICE en una vista, este es el codigo:

SET NUMERIC_ROUNDABORT OFF
GO
SET
ANSI_PADDING,ANSI_WARNINGS,CONCAT_NULL_YIELDS_NULL,ARITHABO
RT,QUOTED_IDENTIFIER, ANSI_NULLS ON
GO


CREATE view view_MyView
WITH SCHEMABINDING
AS
SELECT datepart(hh,myfecha) AS HORA,
datepart(mi,myfecha) AS MINUTO,
count(status) as TOTAL
FROM dbo.FilePaso
WHERE myfecha BETWEEN CONVERT(CHAR(10),GETDATE(),120)+'
00:00:00' AND DATEADD(MI,-3,GETDATE())
AND fb_InputFileStatus = 1
GROUP BY datepart(hh,myfecha), datepart(mi,myfecha)
GO

go
CREATE UNIQUE CLUSTERED INDEX key_MyView ON view_MyView
(HORA, MINUTO, TOTAL)

/*****************************************************

Y este el error

Server: Msg 1935, Level 16, State 1, Line 2
Cannot create index. Object 'FilePaso' was created with
the following SET options off: 'ANSI_NULLS.'.

Algun comentario para resolver el problema.

Gracias.
 

Leer las respuestas

#1 Maximiliano Damian Accotto
01/06/2004 - 02:14 | Informe spam
Hola amigo!! como estas? tu problema debe ser que el CREATE TABLE de la
tabla no ha sido creado con los parametros que pide la vista :(

Te paso los requerimientos de las vistas:


Requisitos de la vista
Antes de poder crear un índice agrupado en una vista, ésta debe cumplir los
requisitos siguientes:

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(*))


Suerte


Salu2

Maximiliano Damian Accotto
Gerente de IT
Fundicion San Cayetano S.A.
Buenos Aires Argentina
-
maxi_accotto[arroba]speedy[.]com[.].ar
MSN:



"Isaías" escribió en el mensaje
news:1621901c44768$9ada5fb0$
Hola

Necesito crear un INDICE en una vista, este es el codigo:

SET NUMERIC_ROUNDABORT OFF
GO
SET
ANSI_PADDING,ANSI_WARNINGS,CONCAT_NULL_YIELDS_NULL,ARITHABO
RT,QUOTED_IDENTIFIER, ANSI_NULLS ON
GO


CREATE view view_MyView
WITH SCHEMABINDING
AS
SELECT datepart(hh,myfecha) AS HORA,
datepart(mi,myfecha) AS MINUTO,
count(status) as TOTAL
FROM dbo.FilePaso
WHERE myfecha BETWEEN CONVERT(CHAR(10),GETDATE(),120)+'
00:00:00' AND DATEADD(MI,-3,GETDATE())
AND fb_InputFileStatus = 1
GROUP BY datepart(hh,myfecha), datepart(mi,myfecha)
GO

go
CREATE UNIQUE CLUSTERED INDEX key_MyView ON view_MyView
(HORA, MINUTO, TOTAL)

/*****************************************************

Y este el error

Server: Msg 1935, Level 16, State 1, Line 2
Cannot create index. Object 'FilePaso' was created with
the following SET options off: 'ANSI_NULLS.'.

Algun comentario para resolver el problema.

Gracias.

Preguntas similares