Problembeschreibung
Angenommen, Sie verfügen über eine Tabelle mit einem gruppierten columnstore-Index in Microsoft SQL Server 2014. Sie führen eine DDL-Abfrage für die Tabelle aus, um den Datentyp einer vorhandenen Spalte zu ändern. Beispielsweise Aktualisieren Sie den Datentyp für column_1 von Table_1 von varchar (499) auf nvarchar (500), indem Sie den folgenden Befehl ausführen:
ALTER TABLE Table_1 ALTER COLUMN Column_1 NVARCHAR(500) NOT NULL
In diesem Fall treten mehrere Assertionsfehler auf, und es wird die folgende Fehlermeldung angezeigt:
Speicherort: <Dateipfad> \xmcolenc.INL: 413Expression: PF_CURRENT_STATUS = = PFS_OK (in XMColumnEncoder<unsigned char *>:: EncodeValueForSecondary) SPID: <SPID>Prozess-ID: <Prozess-ID >Beschreibung: HR: 0x0Location: <Dateipfad> \xmerror.cpp: 43Expression: 0 (in PFSetLastError) SPID: <SPID>Prozess-ID: <Prozess-ID>Beschreibung: HR: 0x0
Darüber hinaus werden im SQL Server-Fehlerprotokoll Ordner mehrere Speicherabbilddateien generiert, und mehrere Fehlermeldungen, die den folgenden ähneln, werden im SQL Server-Fehlerprotokoll protokolliert:
<Datum Uhrzeit> SPID -<-ID> * * * Stapelspeicher, der an <Datenträger Name gesendet wird>: \Programme\Microsoft SQL Server\MSSQL12. SQL2014\MSSQL\LOG\SQLDump0002.txt<Date Time> SPID<ID> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <Datum Uhrzeit> SPID<-ID> * <Datum Uhrzeit> SPID<ID> * Stack-Dump starten: <Datum Uhrzeit> SPID #d20 ID> * <Datum Uhrzeit> SPID<ID><Datum Uhrzeit> SPID<ID> * privater Server-Build. <Datum Uhrzeit> SPID #d32 -ID> * <Datum Uhrzeit> SPID<ID> * Ort: <Dateipfad> \xmcolenc.INL: 413<Datum Uhrzeit> SPID<-ID> * Ausdruck: PF_CURRENT_STATUS = = PFS_OK<Datum Uhrzeit> SPID<ID> * (in XMColumnEncoder<unsigned char *>:: EncodeValueForSecondary) <Datum Uhrzeit> SPID<ID> * SPID: 60<Datum Uhrzeit> SPID<ID> * Prozess-ID : 3680<Datum Uhrzeit> SPID<-ID> * Beschreibung: HR: 0x0<Datum Uhrzeit> SPID <ID> * <Datum Uhrzeit> SPID<ID> * Eingabepuffer 136 Bytes-<Datum Uhrzeit> SPID<ID> * ALTER TABLE Table_1 Alter Column col1 nvarchar (500) NOT NULL;
Fehlerbehebung
Nachdem Sie diesen Hotfix angewendet haben, wird möglicherweise die folgende neue Fehlermeldung angezeigt, wenn die DDL-Abfrage fehlschlägt:
Fehler bei der ALTER TABLE-Anweisung, da ein sekundäres Wörterbuch die maximale Größenbeschränkung erreicht hat. Ziehen Sie den columnstore-Index ab, ändern Sie die Spalte, und erstellen Sie dann einen neuen columnstore-Index.
Dieser Fix verhindert auch, dass die Speicherabbilddateien im SQL Server-Fehlerprotokoll generiert werden. das Problem wurde zunächst in den folgenden kumulativen Updates von SQL Server behoben:
Jedes neue kumulative Update für SQL Server enthält alle Hotfixes und alle Sicherheitsupdates, die im vorherigen kumulativen Update enthalten waren. Wir empfehlen, die neuesten kumulativen Updates für SQL Server herunterzuladen und zu installieren:
Status
Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den in diesem Artikel genannten Microsoft-Produkten handelt.