update view SQL 2000 to 2005

05/12/2007 - 00:20 por Miguel A. | Informe spam
Buenas noches,

he restaurado una DB de SQL 2000 en 2005, y no funciona correctamente.
Al final de la query tengo un order by CP y me ignora en 2005.Como debo de
solucionarlo?
Gracias.

Preguntas similare

Leer las respuestas

#1 Maxi Accotto
05/12/2007 - 00:53 | Informe spam
Hola, usted esta dando muy poca informacion francamente y es asi imposible
ayudarlo.

1) exponga la query
2) Exponga lo esperado
3) exponga el resultado que le esta dando en este momento


Microsoft MVP SQLServer
www.sqltotalconsulting.com
-

"Miguel A." escribió en el mensaje de
noticias:uVP#
Buenas noches,

he restaurado una DB de SQL 2000 en 2005, y no funciona correctamente.
Al final de la query tengo un order by CP y me ignora en 2005.Como debo
de solucionarlo?
Gracias.

Respuesta Responder a este mensaje
#2 Alejandro Mesa
05/12/2007 - 15:57 | Informe spam
Hola Miguel,

Estoy de acuerdo con Maxi en que has dado muy poca informacion, pero creo
saber cual es tu problema. La unica forma de garantizar un resultado
ordenado, es usando la clausula ORDER BY en la sentencia que genera el
resultado. Fijate que resalto que la clausula debe estar en la sentencia que
genera el resultado. Lo que pasa en tu caso, es que usas ORDER BY en la
definicion de la vista y luego no lo usas en la sentencia SELECT que
referencia a la vista:

create view vw_mi_vista
as
select top 100 percent c1, c2, c3
from mi_tabla
order by c1
go

select * from vw_mi_vista
go

Lo anterior no funciona en SQL Server. Ya se que esto funcionava en la
version 2000, pero esto no esta documentado en los libros en linea. SS 2005
no respeta lo anterior y muchas aplicaciones se han visto afectada por esto.
Microsoft saco un parche para hacer que lo anterior funcione en SS 2005, pero
te aconsejo que lo hagas de la forma correcta:

create view vw_mi_vista
as
select c1, c2, c3
from mi_tabla
go

select * from vw_mi_vista
order by c1
go

FIX: When you query through a view that uses the ORDER BY clause in SQL
Server 2005, the result is still returned in random order
http://support.microsoft.com/defaul...s&spid(55


AMB

"Miguel A." wrote:

Buenas noches,

he restaurado una DB de SQL 2000 en 2005, y no funciona correctamente.
Al final de la query tengo un order by CP y me ignora en 2005.Como debo de
solucionarlo?
Gracias.



Respuesta Responder a este mensaje
#3 Miguel A.
06/12/2007 - 12:45 | Informe spam
Graicas a los dos.

Tengo esta sentencia en la vista:


USE [DB]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER VIEW [dbo].[View1]

AS

SELECT TOP 100 PERCENT *

FROM dbo.Table

WHERE (Cliente < 10000) AND (Pais IN ('ES','ALE','FR'))

ORDER BY CodigoPostal



Todos los filtros lo hace bien, excepto el OrderBy.

Debo de crear todas las vistas?, son mas de 50 vistas que actualamente
deberia modificar.



Gracias compañeros.


"Alejandro Mesa" escribió en el
mensaje news:
Hola Miguel,

Estoy de acuerdo con Maxi en que has dado muy poca informacion, pero creo
saber cual es tu problema. La unica forma de garantizar un resultado
ordenado, es usando la clausula ORDER BY en la sentencia que genera el
resultado. Fijate que resalto que la clausula debe estar en la sentencia
que
genera el resultado. Lo que pasa en tu caso, es que usas ORDER BY en la
definicion de la vista y luego no lo usas en la sentencia SELECT que
referencia a la vista:

create view vw_mi_vista
as
select top 100 percent c1, c2, c3
from mi_tabla
order by c1
go

select * from vw_mi_vista
go

Lo anterior no funciona en SQL Server. Ya se que esto funcionava en la
version 2000, pero esto no esta documentado en los libros en linea. SS
2005
no respeta lo anterior y muchas aplicaciones se han visto afectada por
esto.
Microsoft saco un parche para hacer que lo anterior funcione en SS 2005,
pero
te aconsejo que lo hagas de la forma correcta:

create view vw_mi_vista
as
select c1, c2, c3
from mi_tabla
go

select * from vw_mi_vista
order by c1
go

FIX: When you query through a view that uses the ORDER BY clause in SQL
Server 2005, the result is still returned in random order
http://support.microsoft.com/defaul...s&spid(55


AMB

"Miguel A." wrote:

Buenas noches,

he restaurado una DB de SQL 2000 en 2005, y no funciona correctamente.
Al final de la query tengo un order by CP y me ignora en 2005.Como debo
de
solucionarlo?
Gracias.



Respuesta Responder a este mensaje
#4 Miguel A.
06/12/2007 - 14:12 | Informe spam
Una pregunta, debo entonces realizar dos vistas?, una que me haga

SELECT TOP 100 PERCENT *
FROM dbo.Table
WHERE (Cliente < 10000) AND (Pais IN ('ES','ALE','FR'))

y otra

SELECT * FROM VISTA
ORDER BY CodigoPostal

no sepuede hacer todo en la misma vista?.

Yo tengo instalado el cumulative 4 del SQL 2005 y en las opciones tengo
Compatibility level - SQL Server 2000 (80), se supone que deberia funcionar
no?



"Miguel A." escribió en el mensaje
news:e0XHu0$
Graicas a los dos.

Tengo esta sentencia en la vista:


USE [DB]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER VIEW [dbo].[View1]

AS

SELECT TOP 100 PERCENT *

FROM dbo.Table

WHERE (Cliente < 10000) AND (Pais IN ('ES','ALE','FR'))

ORDER BY CodigoPostal



Todos los filtros lo hace bien, excepto el OrderBy.

Debo de crear todas las vistas?, son mas de 50 vistas que actualamente
deberia modificar.



Gracias compañeros.


"Alejandro Mesa" escribió en el
mensaje news:
Hola Miguel,

Estoy de acuerdo con Maxi en que has dado muy poca informacion, pero creo
saber cual es tu problema. La unica forma de garantizar un resultado
ordenado, es usando la clausula ORDER BY en la sentencia que genera el
resultado. Fijate que resalto que la clausula debe estar en la sentencia
que
genera el resultado. Lo que pasa en tu caso, es que usas ORDER BY en la
definicion de la vista y luego no lo usas en la sentencia SELECT que
referencia a la vista:

create view vw_mi_vista
as
select top 100 percent c1, c2, c3
from mi_tabla
order by c1
go

select * from vw_mi_vista
go

Lo anterior no funciona en SQL Server. Ya se que esto funcionava en la
version 2000, pero esto no esta documentado en los libros en linea. SS
2005
no respeta lo anterior y muchas aplicaciones se han visto afectada por
esto.
Microsoft saco un parche para hacer que lo anterior funcione en SS 2005,
pero
te aconsejo que lo hagas de la forma correcta:

create view vw_mi_vista
as
select c1, c2, c3
from mi_tabla
go

select * from vw_mi_vista
order by c1
go

FIX: When you query through a view that uses the ORDER BY clause in SQL
Server 2005, the result is still returned in random order
http://support.microsoft.com/defaul...s&spid(55


AMB

"Miguel A." wrote:

Buenas noches,

he restaurado una DB de SQL 2000 en 2005, y no funciona correctamente.
Al final de la query tengo un order by CP y me ignora en 2005.Como debo
de
solucionarlo?
Gracias.









Respuesta Responder a este mensaje
#5 Alejandro Mesa
06/12/2007 - 15:55 | Informe spam
Miguel,

Creo que no me he explicado bien. No tiene sentido alguno usar la clausula
"ORDER BY" en la definicion de una vista, debes usarla en la sentencia que
referencia a la vista.

create view mi_vista
as
SELECT c1, c2, .., cn
FROM dbo.Table
WHERE (Cliente < 10000) AND (Pais IN ('ES','ALE','FR'))
GO

select c1, c2, ..., cn
from mi_vista
order by CodigoPostal


AMB

"Miguel A." wrote:

Una pregunta, debo entonces realizar dos vistas?, una que me haga

SELECT TOP 100 PERCENT *
FROM dbo.Table
WHERE (Cliente < 10000) AND (Pais IN ('ES','ALE','FR'))

y otra

SELECT * FROM VISTA
ORDER BY CodigoPostal

no sepuede hacer todo en la misma vista?.

Yo tengo instalado el cumulative 4 del SQL 2005 y en las opciones tengo
Compatibility level - SQL Server 2000 (80), se supone que deberia funcionar
no?



"Miguel A." escribió en el mensaje
news:e0XHu0$
> Graicas a los dos.
>
> Tengo esta sentencia en la vista:
>
>
> USE [DB]
>
> GO
>
> SET ANSI_NULLS ON
>
> GO
>
> SET QUOTED_IDENTIFIER ON
>
> GO
>
> ALTER VIEW [dbo].[View1]
>
> AS
>
> SELECT TOP 100 PERCENT *
>
> FROM dbo.Table
>
> WHERE (Cliente < 10000) AND (Pais IN ('ES','ALE','FR'))
>
> ORDER BY CodigoPostal
>
>
>
> Todos los filtros lo hace bien, excepto el OrderBy.
>
> Debo de crear todas las vistas?, son mas de 50 vistas que actualamente
> deberia modificar.
>
>
>
> Gracias compañeros.
>
>
> "Alejandro Mesa" escribió en el
> mensaje news:
>> Hola Miguel,
>>
>> Estoy de acuerdo con Maxi en que has dado muy poca informacion, pero creo
>> saber cual es tu problema. La unica forma de garantizar un resultado
>> ordenado, es usando la clausula ORDER BY en la sentencia que genera el
>> resultado. Fijate que resalto que la clausula debe estar en la sentencia
>> que
>> genera el resultado. Lo que pasa en tu caso, es que usas ORDER BY en la
>> definicion de la vista y luego no lo usas en la sentencia SELECT que
>> referencia a la vista:
>>
>> create view vw_mi_vista
>> as
>> select top 100 percent c1, c2, c3
>> from mi_tabla
>> order by c1
>> go
>>
>> select * from vw_mi_vista
>> go
>>
>> Lo anterior no funciona en SQL Server. Ya se que esto funcionava en la
>> version 2000, pero esto no esta documentado en los libros en linea. SS
>> 2005
>> no respeta lo anterior y muchas aplicaciones se han visto afectada por
>> esto.
>> Microsoft saco un parche para hacer que lo anterior funcione en SS 2005,
>> pero
>> te aconsejo que lo hagas de la forma correcta:
>>
>> create view vw_mi_vista
>> as
>> select c1, c2, c3
>> from mi_tabla
>> go
>>
>> select * from vw_mi_vista
>> order by c1
>> go
>>
>> FIX: When you query through a view that uses the ORDER BY clause in SQL
>> Server 2005, the result is still returned in random order
>> http://support.microsoft.com/defaul...s&spid(55
>>
>>
>> AMB
>>
>> "Miguel A." wrote:
>>
>>> Buenas noches,
>>>
>>> he restaurado una DB de SQL 2000 en 2005, y no funciona correctamente.
>>> Al final de la query tengo un order by CP y me ignora en 2005.Como debo
>>> de
>>> solucionarlo?
>>> Gracias.
>>>
>>>
>>>
>
>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida