KB2589980-FIX: risultati non corretti o violazione di vincoli quando si esegue un'istruzione SELECT o DML che usa la funzione row_number e un piano di esecuzione parallelo in SQL Server 2008

Microsoft distribuisce le correzioni di Microsoft SQL Server 2008 come un file scaricabile. Poiché le correzioni sono cumulative, ogni nuova versione contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nella versione precedente di SQL Server 2008 FIX.

Sintomi

Considerare lo scenario descritto di seguito:

  • Si esegue una query parallela che usa la funzione ROW_NUMBER in Microsoft SQL Server 2008.

  • Si prova a eseguire la query utilizzando una sottoquery che si trova all'interno di un'istruzione Select o di un'istruzione DML (Data Manipulation Language).

In questo scenario si verifica uno dei problemi seguenti:

  • Si ottengono risultati non corretti se si esegue la query all'interno dell'istruzione Select molte volte.

  • La tabella potrebbe contenere dati non corretti se la query viene eseguita all'interno di un'istruzione DML. Se la tabella contiene vincoli, l'istruzione potrebbe non riuscire con una violazione del vincolo. Ad esempio, un'istruzione Insert potrebbe non riuscire e si verifica un errore di violazione della chiave primaria se la tabella ha una chiave primaria.

Nota Questi problemi possono verificarsi in una delle situazioni seguenti:

  • Si imposta l'opzione di hint per la query MAXDOP su un valore maggiore di 2.

  • Si imposta l'opzione max degree of parallelism su un valore maggiore di 2 nella configurazione del server.

Risoluzione

Per risolvere il problema, ottenere il Service Pack più recente per SQL Server 2008. Per ulteriori informazioni, fare clic sul numero dell'articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:

968382 Come ottenere il Service Pack più recente per SQL Server 2008

Soluzione alternativa

Per ovviare a questo problema, utilizzare uno dei seguenti metodi:

  • Enable 4134 flag Trace se è stato applicato uno degli aggiornamenti seguenti:

    • Pacchetto di aggiornamento cumulativo 6 per SQL Server 2008 o un pacchetto di aggiornamento cumulativo successivo per SQL Server 2008

    • Pacchetto di aggiornamento cumulativo 2 per SQL Server 2008 Service Pack 1 (SP1) o un pacchetto di aggiornamento cumulativo successivo per SQL Server 2008 SP1

    Per altre informazioni su come abilitare i contrassegni di traccia, visitare il sito Web MSDN seguente:

    Come abilitare i contrassegni di traccia

  • Fare riferimento alla sezione "soluzione alternativa" nell'articolo 970198 della Microsoft Knowledge base. Per ulteriori informazioni, fare clic sul numero dell'articolo seguente per visualizzare l'articolo nella Microsoft Knowledge Base:

    970198 FIX: viene visualizzato un risultato non corretto quando si esegue una query che usa la funzione row_number in SQL Server 2008

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×