KB3098529 – KORJAUS: Vahvistusvirhe sarakkeen tyyppiä muutettaessa SQL Server 2014:ssä

Käytetään kohteeseen
SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

Ongelman ilmenemistapa

Oletetaan, että sinulla on Microsoft SQL Server 2014:ssä taulukko, jossa on klusteroitu pylvässäilöindeksi. Muuta aiemmin luodun sarakkeen tietotyyppiä suorittamalla DDL-kysely taulukossa. Voit esimerkiksi päivittää Table_1 Column_1 tietotyypin VARCHARista (499) NVARCHAR-arvoon (500) suorittamalla seuraavan komennon:

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

Tässä tapauksessa tapahtuu useita vahvistusvirheitä, ja näyttöön tulee seuraava virhesanoma:

Huomautus

Sijainti: <Tiedostopolku>\xmcolenc.inl:413
Lauseke: PF_CURRENT_STATUS == PFS_OK
(XMColumnEncoderissa)<unsigned char *>::EncodeValueForSecondary)
SPID: <SPID>
Prosessin tunnus: <Prosessin tunnus>
Kuvaus: hr: 0x0

Sijainti: <Tiedostopolku>\xmerror.cpp:43
Lauseke: 0
(PFSetLastErrorissa)
SPID: <SPID>
Prosessin tunnus: <Prosessin tunnus>
Kuvaus: hr: 0x0

Lisäksi SQL Server -virhelokikansioon luodaan useita muistivedostiedostoja ja SQL Server -virhelokiin kirjataan useita seuraavankaltaisia virhesanomia:

Huomautus

< Päivämäärä ja aika> spid-tunnus<> ***Pinovedos lähetetään levylle< nimi>:\Program Files\Microsoft SQL Server\MSSQL12.SQL2014\MSSQL\LOG\SQLDump0002.txt
< Päivämäärä ja aika> spid-tunnus<> * *******************************************************************************
< Päivämäärä ja aika> spid-tunnus<>*
< Päivämäärä ja aika> spid-tunnus<>* ALOITA PINOVEDOS:
< Päivämäärä ja aika> spid<ID>* <Päivämäärä ja aika>spid-tunnus<>
< Päivämäärä ja aika> spid<ID>* Yksityinen palvelimen koontiversio.
< Päivämäärä ja aika> spid-tunnus<>*
< Päivämäärä ja aika> spid<ID>* Sijainti: <Tiedostopolku>\xmcolenc.inl:413
< Päivämäärä ja aika> spid<ID>* Lauseke: PF_CURRENT_STATUS == PFS_OK
< Päivämäärä ja aika> spid<ID>* (XMColumnEncoderissa<unsigned char *>::EncodeValueForSecondary)
< Päivämäärä ja aika> spid-tunnus<>* SPID: 60
< Päivämäärä ja aika> spid-tunnus<>* Prosessin tunnus: 3680
< Päivämäärä ja aika> spid<ID>* Kuvaus: hr: 0x0
< Päivämäärä ja aika> spid-tunnus<>*
< Päivämäärä ja aika> spid<ID>* Syötepuskuri 136 tavua –
< Päivämäärä ja aika> spid<ID>* ALTER TABLE Table_1 ALTER COLUMN COL1 NVARCHAR(500) NOT NULL;

Ratkaisu

Tämän Hotfix-korjauksen käyttöönoton jälkeen näyttöön saattaa tulla seuraava uusi virhesanoma, kun DDL-kysely epäonnistuu:

Huomautus

ALTER TABLE -lauseke epäonnistui, koska toissijainen sanasto saavutti enimmäiskokorajoituksen. Harkitse sarakesäilön indeksin poistamista, sarakkeen muuttamista ja uuden sarakesäilön indeksin luomista

Tämä korjaus estää myös muistivedostiedostojen luomisen SQL Server -virhelokissa.

Ongelma korjattiin ensimmäisen kerran seuraavissa SQL Server kumulatiivisissa päivityksissä:

Suositus: Asenna uusin kumulatiivinen päivitys SQL Server:lle

Jokainen uusi SQL Server -kumulatiivinen päivitys sisältää kaikki edelliseen kumulatiiviseen päivitykseen sisältyvät hotfix-korjaukset ja tietoturvakorjaukset. Suosittelemme, että lataat ja asennat uusimmat kumulatiiviset päivitykset SQL Server:lle:

      

Tila

Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.