Sintomi
Supponiamo che tu usi Microsoft SQL Server 2008 R2, SQL Server 2012 o SQL Server 2014. Quando si esegue una query utilizzando TOP N e ORDER BY, la query raggiunge un errore Assert simile al seguente:
Posizione: "qstopsrt. cpp": 384Expression: fFalseSPID: <SPID>ID processo: <ProcessId>location: Qxcntxt. cpp: 1052Expression: cref = = 0SPID: <SPID>ID processo: <ProcessId>Msg 3624, livello 20, stato 1, controllo dell'asserzione del sistema line 2a non riuscito. Per informazioni dettagliate, vedere il log degli errori di SQL Server. In genere, un errore di asserzione è causato da un bug software o da un danneggiamento dei dati. Per verificare il danneggiamento del database, provare a eseguire DBCC CHECKDB. Se si è deciso di inviare dump a Microsoft durante l'installazione, verrà inviato un mini dump a Microsoft. Un aggiornamento potrebbe essere disponibile da Microsoft nel Service Pack più recente o in un QFE dal supporto tecnico. Msg 0, livello 20, stato 0, errore di linea 0A grave si è verificato il comando corrente. I risultati, se presenti, devono essere eliminati.
Nota La correzione può anche applicarsi a che il piano di query contiene "ordinamento (inizio N ordinamento)."
Causa
Il problema si verifica perché un errore interno nel motore di esecuzione della query.
Risoluzione
Il problema è stato risolto per la prima volta nel seguente aggiornamento cumulativo di SQL Server.
Aggiornamento cumulativo 1 per SQL Server 2012 SP2 /en-us/help/2976982
Aggiornamento cumulativo 2 per SQL Server 2014 /en-us/help/2967546
Aggiornamento cumulativo 10 per SQL Server 2012 SP1 /en-us/help/2954099
Aggiornamento cumulativo 12 per SQL Server 2008 R2 SP2 /en-us/help/2938478
Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. Vedere gli ultimi aggiornamenti cumulativi per SQL Server:
Stato
Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".