Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Clausola Order By su SQL Server 2005
giovedì 22 gennaio 2009 - 19.08
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
andry82
Profilo
| Newbie
5
messaggi | Data Invio:
gio 22 gen 2009 - 19:08
Ho notato dopo il passaggio a SQL Server 2005 (avevo SQL Server 2000) che tutte le viste che avevano la clausola Order by al loro interno perdono l'ordinamento al momento che i dati vengono inviati ad un programma esterno (es. Access o Visual Studio .NET).
La cosa mi ha sorpreso parecchio, anche perchè se non esiste una soluzione devo perforza modificare tutti i programmi che si basano su questo DB.
Su internet ho trovato quest'articolo del supporto Microsoft
http://support.microsoft.com/kb/926292
Ho scaricato la fix ma non riesco ad installarla perchè ho il SP3 mentre l'ultimo Fix installabile è per SP2.
Esiste un metodo per riportare le cose come con SQL Server 2000?
Grazie
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
gio 22 gen 2009 - 20:51
>Ho notato dopo il passaggio a SQL Server 2005 (avevo SQL Server
>2000) che tutte le viste che avevano la clausola Order by al
>loro interno perdono l'ordinamento al momento che i dati vengono
>inviati ad un programma esterno (es. Access o Visual Studio .NET).
L'errore è a monte dato che è concettualmente errato specificare una clausola di ordinamento nel body di una vista (vincolo aggirato col "trucchetto" della TOP 100 PERCENT), dato che una vista potrebbe essere richiamata da query esterne che adottano criteri di ordinamento differenti oppure l'optimizer in fase di risoluzione potrebbe forzare altri ordinamenti, col risultato di eseguire 1 ordinamento del tutto inutile (operazione molto onerosa per il dbengine).
>Esiste un metodo per riportare le cose come con SQL Server 2000?
Non ho provato, ma impostando il compatibility level a SQL Server 2000 (80) ottieni il vecchio comportamento?
>Grazie
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
andry82
Profilo
| Newbie
5
messaggi | Data Invio:
ven 23 gen 2009 - 09:05
Anche mettendo la compatibilità con la versione del SQL Server 2000. continua a non funzionare.
Credo però che sia un bug sia del 2005 che del 2008, altrimenti non avrebbe senso creare un fix per risolvere il problema (
http://support.microsoft.com/kb/926292
).
Il fatto è che con SP3 non è possibile installare questo fix.
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
ven 23 gen 2009 - 11:22
>Anche mettendo la compatibilità con la versione del SQL Server
>2000. continua a non funzionare.
OK
>Credo però che sia un bug sia del 2005 che del 2008, altrimenti
>non avrebbe senso creare un fix per risolvere il problema (
http://support.microsoft.com/kb/926292
).
Ricordo che il Team di SQL Server rilasciò un commento ufficioso quando facemmo notare questo comportamento in SQL Server 2005: "E' by design" ovvero un modo "gentile" per ammettere il bug.
Comunque come ho già detto è concettualmente sbagliato applicare una clausola di ordinamento in una vista, quindi io personalmente sono "contento" di questo bug
>Il fatto è che con SP3 non è possibile installare questo fix.
Hai provato a disinstallare l'SP3, applicare la fix e riapplicare l'SP3?
Inoltre ti segnalo che è uscito il Pacchetto di aggiornamento cumulativo 1 per SQL Server 2005 Service Pack 3:
http://support.microsoft.com/kb/959195
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !