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

#6 Miguel A.
06/12/2007 - 16:13 | Informe spam
Alejandro, esta muy bien explicado, pero te explico.

Tengo un programa en VB que realiza el siguiente procedimiento.
Tengo un formulario que plasmo en la parte izq el nombre de las Vistas:
Vista1
Vista2
Vista3

Vista4

y cuando hacen un docble click el personal, muestra el contenido de esas
vistas en la parte drcha del formulario.


"Alejandro Mesa" escribió en el
mensaje news:
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
#7 Maxi
06/12/2007 - 17:25 | Informe spam
Miguel, y porque no pasa las vistas a Store procedures?


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Miguel A." escribió en el mensaje
news:
Alejandro, esta muy bien explicado, pero te explico.

Tengo un programa en VB que realiza el siguiente procedimiento.
Tengo un formulario que plasmo en la parte izq el nombre de las Vistas:
Vista1
Vista2
Vista3

Vista4

y cuando hacen un docble click el personal, muestra el contenido de esas
vistas en la parte drcha del formulario.


"Alejandro Mesa" escribió en el
mensaje news:
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
#8 Miguel A.
06/12/2007 - 18:44 | Informe spam
no se ocmo hacerlo sinceramente... me peleo con el SQL, hago mis pinitos,
pero...

"Maxi" escribió en el mensaje
news:
Miguel, y porque no pasa las vistas a Store procedures?


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Miguel A." escribió en el mensaje
news:
Alejandro, esta muy bien explicado, pero te explico.

Tengo un programa en VB que realiza el siguiente procedimiento.
Tengo un formulario que plasmo en la parte izq el nombre de las Vistas:
Vista1
Vista2
Vista3

Vista4

y cuando hacen un docble click el personal, muestra el contenido de esas
vistas en la parte drcha del formulario.


"Alejandro Mesa" escribió en el
mensaje news:
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
#9 Maxi
07/12/2007 - 15:49 | Informe spam
Revisa el comando Create Procedure


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Miguel A." escribió en el mensaje
news:
no se ocmo hacerlo sinceramente... me peleo con el SQL, hago mis pinitos,
pero...

"Maxi" escribió en el mensaje
news:
Miguel, y porque no pasa las vistas a Store procedures?


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Miguel A." escribió en el mensaje
news:
Alejandro, esta muy bien explicado, pero te explico.

Tengo un programa en VB que realiza el siguiente procedimiento.
Tengo un formulario que plasmo en la parte izq el nombre de las Vistas:
Vista1
Vista2
Vista3

Vista4

y cuando hacen un docble click el personal, muestra el contenido de esas
vistas en la parte drcha del formulario.


"Alejandro Mesa" escribió en
el mensaje news:
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
#10 Alejandro Mesa
07/12/2007 - 16:13 | Informe spam
Miguel A.,

1 - Que sentencia usas para mostrar el contenido de la vista?

Me inmagino que usas "select * from mi_vista", correcto?. Pues usa:

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

2 - Tambien puedes sortear en la aplicacion cliente.
3 - Puedes usar un procedimiento almacenado, como bien sugirio Maxi.


AMB


"Miguel A." wrote:

Alejandro, esta muy bien explicado, pero te explico.

Tengo un programa en VB que realiza el siguiente procedimiento.
Tengo un formulario que plasmo en la parte izq el nombre de las Vistas:
Vista1
Vista2
Vista3
.
Vista4

y cuando hacen un docble click el personal, muestra el contenido de esas
vistas en la parte drcha del formulario.


"Alejandro Mesa" escribió en el
mensaje news:
> 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 AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida