KB3098529-FIX: errore di asserzione quando si modifica il tipo di una colonna in SQL Server 2014

Sintomi

Supponiamo di avere una tabella che contiene un indice columnstore raggruppato in Microsoft SQL Server 2014. Si esegue una query DDL sulla tabella per modificare il tipo di dati di una colonna esistente. Ad esempio, è possibile aggiornare il tipo di dati per Column_1 di Table_1 da VARCHAR (499) a NVARCHAR (500) eseguendo il comando seguente:

ALTER TABLE Table_1 ALTER COLUMN Column_1 NVARCHAR(500) NOT NULL

In questa situazione si verificano più errori di asserzione e viene visualizzato il messaggio di errore seguente:

Posizione: <percorso File> \Xmcolenc.inl: 413Expression: PF_CURRENT_STATUS = = PFS_OK (in XMColumnEncoder<carattere non firmato *>:: EncodeValueForSecondary) SPID : <SPID>ID processo : < ID processo> Descrizione: HR: 0x0Location: <percorso file> \Xmerror.cpp: 43EXPRESSION: 0 (in PFSetLastError) SPID: <SPID>ID processo

Inoltre, vengono generati più file di dump della memoria nella cartella del log degli errori di SQL Server e nel log degli errori di SQL Server vengono registrati più messaggi di errore simili a quelli seguenti:

<Data/ora> SPID<ID> * * * il dump dello Stack viene inviato a <nome disco>: \Programmi\Microsoft SQL Server\MSSQL12. SQL2014\MSSQL\LOG\SQLDump0002.txt<Data/ora> SPID<ID> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <data/ora> SPID<id> * <Data/ora> SPID<ID> * Begin STACK dump: <Data Time> SPID<ID> * <Data Time> spid<ID><Data e ora> SPID<ID> * build del server privato. <Data/ora> SPID<ID> * <data e ora> SPID<ID> * location: <percorso file> \xmcolenc.inl: 413<Data/ora> SPID<ID> * espressione: PF_CURRENT_STATUS = = PFS_OK<Data/ora> SPID<ID> * (in XMColumnEncoder<carattere non firmato *>:: EncodeValueForSecondary) <data e ora> SPID<ID> * SPID: 60<data e ora> SPID<ID> * ID processo : 3680<Data/ora> SPID<ID> * Descrizione: HR: 0x0<data e ora> SPID<id> * <data e ora> SPID<ID> * buffer di input 136 byte-<Data Time> SPID<ID> * ALTER TABLE Table_1 ALTER COLUMN col1 nvarchar (500) not null;

Risoluzione

Dopo aver applicato questo hotfix, è possibile che venga visualizzato il messaggio di errore seguente quando la query DDL non riesce:

L'istruzione ALTER TABLE non è riuscita perché un dizionario secondario ha raggiunto il limite massimo di dimensione. Considerare l'eliminazione dell'indice columnstore, la modifica della colonna e la creazione di un nuovo indice columnstore

Questa correzione consente inoltre di evitare che i file di dump della memoria vengano generati nel log degli errori di SQL Server. il problema è stato risolto per la prima volta nei seguenti aggiornamenti cumulativi di SQL Server:

Ogni nuovo aggiornamento cumulativo per SQL Server contiene tutti gli hotfix e tutti gli aggiornamenti della sicurezza inclusi nell'aggiornamento cumulativo precedente. È consigliabile scaricare e installare gli aggiornamenti cumulativi più recenti per SQL Server:

Stato

Microsoft ha confermato che questo problema si verifica nei prodotti elencati nella sezione "Si applica a".

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.

×