KB3098529 - ÅTGÄRDAT: Assertion Failure when you change the type of a column in SQL Server 2014

Gäller för
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Symptom

Anta att du har en tabell som har ett grupperat columnstore-index i Microsoft SQL Server 2014. Du kör en DDL-fråga mot tabellen för att ändra datatypen för en befintlig kolumn. Du kan till exempel uppdatera datatypen för Column_1 av Table_1 från VARCHAR (499) till NVARCHAR (500) genom att köra följande kommando:

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

I det här fallet inträffar flera kontrollfel och du får följande felmeddelande:

Obs

Plats: <Filsökväg>\xmcolenc.inl:413
Uttryck: PF_CURRENT_STATUS == PFS_OK
(i XMColumnEncoder<unsigned char *>::EncodeValueForSecondary)
SPID: <SPID>
Process-ID: <Process-ID>
Beskrivning: hr: 0x0

Plats: <Sökväg>\xmerror.cpp:43
Uttryck: 0
(i PFSetLastError)
SPID: <SPID>
Process-ID: <Process-ID>
Beskrivning: hr: 0x0

Dessutom genereras flera minnesdumpfiler i felloggmappen för SQL Server och flera felmeddelanden som liknar följande loggas i felloggen för SQL Server:

Obs

< Datum/tid> spid<ID> ***Stackdump skickas till <disknamnet>:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014\MSSQL\LOG\SQLDump0002.txt
< Datum/tid> spid<ID> * *******************************************************************************
< Datum/tid> spid<ID*>
< Datum/tid> spid<ID*> BEGIN STACK DUMP:
< Datum/tid> spid<ID*><Datum/tid> spid<ID>
< Datum/tid> spid<ID*> Privat serverversion.
< Datum/tid> spid<ID*>
< Datum/tid> spid<ID*> Plats: <Filsökväg>\xmcolenc.inl:413
< Datum/tid> spid<ID>*-uttryck: PF_CURRENT_STATUS == PFS_OK
< Datum/tid> spid<ID*> (i XMColumnEncoder<unsigned char *>::EncodeValueForSecondary)
< Datum/tid> spid<ID* SPID:> 60
< Datum/tid> spid<ID*> Process-ID: 3680
< Datum/tid> spid<ID*> Beskrivning: hr: 0x0
< Datum/tid> spid<ID*>
< Datum/tid> spid<ID*>-indatabuffert 136 byte –
< Datum/tid> spid<ID*> ALTER TABLE Table_1 ALTER COLUMN COL1 NVARCHAR(500) NOT NULL;

Lösning

När du har installerat den här snabbkorrigeringen kan du få följande nya felmeddelande när DDL-frågan misslyckas:

Obs

ALTER TABLE-instruktionen misslyckades eftersom en sekundär ordlista nådde den maximala storleksgränsen. Överväg att släppa columnstore-indexet, ändra kolumnen och sedan skapa ett nytt columnstore-index

Den här korrigeringen förhindrar också att minnesdumpfilerna genereras i felloggen för SQL Server.

Problemet åtgärdades först i följande kumulativa uppdateringar av SQL Server:

Rekommendation: Installera den senaste kumulativa uppdateringen för SQL Server

Varje ny kumulativ uppdatering för SQL Server innehåller alla snabbkorrigeringar och alla säkerhetskorrigeringar som ingick i den tidigare kumulativa uppdateringen. Vi rekommenderar att du laddar ned och installerar de senaste kumulativa uppdateringarna för SQL Server:

      

Status

Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".