Sign in with Microsoft
Sign in or create an account.
Hello,
Select a different account.
You have multiple accounts
Choose the account you want to sign in with.

Symptoms

Assume that you have a table that has a clustered columnstore index in Microsoft SQL Server 2014. You run a DDL query against the table to change the data type of an existing column. For example, you update the data type for Column_1 of Table_1 from VARCHAR (499) to NVARCHAR (500) by running the following command:

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

In this situation, multiple assertion failures occur, and you receive the following error message:

Location: <File Path>\xmcolenc.inl:413
Expression: PF_CURRENT_STATUS == PFS_OK
(in XMColumnEncoder<unsigned char *>::EncodeValueForSecondary)
SPID: <SPID>
Process ID: <Process ID >
Description: hr: 0x0

Location: <File Path>\xmerror.cpp:43
Expression: 0
(in PFSetLastError)
SPID: <SPID>
Process ID: <Process ID>
Description: hr: 0x0


Additionally, multiple memory dump files are generated in the SQL Server Error Log folder, and multiple error messages that resemble the following are logged in the SQL Server Error log:

<Date Time> spid<ID> ***Stack Dump being sent to <Disk Name>:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014\MSSQL\LOG\SQLDump0002.txt
<Date Time> spid<ID> * *******************************************************************************
<Date Time> spid<ID>*
<Date Time> spid<ID>* BEGIN STACK DUMP:
<Date Time> spid<ID>* <Date Time> spid<ID>
<Date Time> spid<ID>* Private server build.
<Date Time> spid<ID>*
<Date Time> spid<ID>* Location: <File Path>\xmcolenc.inl:413
<Date Time> spid<ID>* Expression: PF_CURRENT_STATUS == PFS_OK
<Date Time> spid<ID>* (in XMColumnEncoder<unsigned char *>::EncodeValueForSecondary)
<Date Time> spid<ID>* SPID: 60
<Date Time> spid<ID>* Process ID: 3680
<Date Time> spid<ID>* Description: hr: 0x0
<Date Time> spid<ID>*
<Date Time> spid<ID>* Input Buffer 136 bytes -
<Date Time> spid<ID>* ALTER TABLE Table_1 ALTER COLUMN COL1 NVARCHAR(500) NOT NULL;

Resolution

After you apply this hotfix, you may receive the following new error message when the DDL query fails:

ALTER TABLE statement failed because a secondary dictionary reached the maximum size limit. Consider dropping the columnstore index, altering the column, then creating a new columnstore index


This fix also prevents the memory dump files from being generated in SQL Server Error Log.

The issue was first fixed in the following cumulative updates of SQL Server:

Each new cumulative update for SQL Server contains all the hotfixes and all the security fixes that were included with the previous cumulative update. We recommend that you download and install the latest cumulative updates for SQL Server:


Status

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

Need more help?

Want more options?

Explore subscription benefits, browse training courses, learn how to secure your device, and more.

Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.

Was this information helpful?

What affected your experience?
By pressing submit, your feedback will be used to improve Microsoft products and services. Your IT admin will be able to collect this data. Privacy Statement.

Thank you for your feedback!

×