Simptomai
Tarkime, kad turite lentelę, kurioje yra Jungtinė columnstore indeksas "Microsoft SQL Server" 2014. Galite vykdyti DDL užklausą prieš lentelę, kad pakeistumėte esamo stulpelio duomenų tipą. Pavyzdžiui, galite atnaujinti Column_1 Table_1 iš VARCHAR (499) duomenų tipą į NVARCHAR (500) paleisdami šią komandą:
ALTER TABLE Table_1 ALTER COLUMN Column_1 NVARCHAR(500) NOT NULL
Esant tokiai situacijai, įvyksta keli patvirtinimo gedimai ir gaunate šį klaidos pranešimą:
Vieta: <failo maršrutas> \xmcolenc.INL: 413Expression: PF_CURRENT_STATUS = = PFS_OK (XMColumnEncoder<nepasirašytos char *>:: Encodevalueforvidurinis) SPID: <spid>proceso ID: <proceso ID >aprašas: HR: 0x0location: <failo maršrutas> \xmerror.cpp: 43expression: 0 (pfsetlasterror) SPID: <SPID>proceso ID: <proceso ID>Description: HR: 0x0
Be to, SQL serverio klaidų žurnalų aplanke sugeneruojami keli atminties iškelties failai, o SQL serverio klaidų žurnale įrašomi keli klaidų laiškai, panašūs į šiuos:
<datos laikas> spid<ID> * * * rietuvės iškelties, siunčiami <disko vardą>: \Program Files\microsoft SQL Server\MSSQL12. SQL2014\MSSQL\LOG\SQLDump0002.txt<datos laikas> spid<ID> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * <datos laikas> spid<ID> * <datos laikas> SPID<ID> * "BEGIN STACK dump": <datos laikas> SPID<ID> * <datos laikas> SPID<id><datos laikas> SPID<ID> * privatus serverio Komponavimo versija. <datos laikas> SPID<ID> * <datos laikas> spid<ID> * vieta: <failo kelias> \xmcolenc.INL: 413<datos laikas> SPID<ID> * išraiška: PF_CURRENT_STATUS = = PFS_OK<datos laikas> spid<id> * (Xmcolumnencoder<nepasirašytos char *>:: encodevaluseforvidurinis) <datos laikas> SPID<ID> * SPID: 60<datos laikas> SPID<ID> * proceso ID : 3680<datos laikas> spid<ID> * aprašas: hr: 0X0<datos laikas> SPID<ID> * <datos laikas> SPID<id> * įvesties buferio 136 BAITŲ – <datos laikas> SPID<ID> * Alter lentelė Table_1 Alter stulpelių Stulp1 esanti reikšmė nvarchar (500) Not Null;
Sprendimas
Pritaikius šias karštąsias pataisas, gali būti parodytas toliau pateiktas naujas klaidos pranešimas, kai DDL užklausa nepavyksta:
PAKEISTI lentelės sakinį nepavyko, nes antrinis žodynas pasiekė maksimalų dydžio limitą. Apsvarstykite, kaip nuleisti columnstore indeksą, pakeisti stulpelį, tada sukurti naują columnstore indeksą
Ši pataisa taip pat neleidžia sugeneruoti atminties iškelties failų į "SQL Server" klaidų žurnalų. problema pirmą kartą išspręsta šiuose kaupiamajame SQL serverio naujinimuose:
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Rekomenduojame atsisiųsti ir įdiegti naujausius kaupiamuosius SQL serverio naujinimus:
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.