KB4046745 — IZLABOTS: Priekšraksts UPDATE neizdodas klusi, ja atsaucaties uz neesošu nodalījuma funkciju klauzulā WHERE programmā SQL Server 2014, 2016 vai 2017

Attiecas uz
SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2017 Developer SQL Server 2017 Enterprise Core SQL Server 2017 Enterprise SQL Server 2016 Service Pack 1 SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

Pazīmes

Pieņemsim, ka jums ir priekšraksts UPDATE, kurā ir atsauce uz neesošu nodalījuma funkciju, izmantojot atslēgvārdu $PARTITION Microsoft SQL Server 2014, 2016 vai 2017. Piemērs:

Piezīme

UPDATE TableName SET ColumnName='xyz' KUR $PARTITION. NonExistingPartitionFunction(Kolonnas_nosaukums) = 1

Šādā gadījumā SQL Server neveic atjaunināšanu vai neatgriež kļūdas ziņojumu, lai norādītu, ka objekts NonExistingPartitionFunction nepastāv. Tomēr no lietotāja viedokļa šķiet, ka UPDATE paziņojums ir veiksmīgi izpildīts, bet patiesībā tas neizdevās.

Iemesls

Izpildot paketi, SQL Server var izmantot pagarinājuma nosaukuma izšķiršanu (DNR). Šajā procesā SQL Server uzreiz nerada kļūdu, kad tas saskaras ar neeksistējošu objektu, un tas paredz, ka objektu izveidos modulis vai pakete pirms tā paziņojuma izpildes, kas atsaucas uz šo objektu. Nodalījuma funkcijām SQL Server nepareizi apstrādā DNR.

Papildinformācija

Papildinformāciju par DNR skatiet sadaļā Pagarinājuma nosaukuma izšķirtspēja.

Risinājums

Šī problēma ir novērsta šādos SQL Server kumulatīvajos atjauninājumos:

8. kumulatīvais atjauninājums operētājsistēmai SQL Server 2016 SP1

SQL Server 2017 4. kumulatīvais atjauninājums

9. kumulatīvais atjauninājums operētājsistēmai SQL Server 2014 SP2

Par SQL Server kumulatīvajiem atjauninājumiem:

Katrā jaunajā SQL Server kumulatīvajā atjauninājumā ir visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos SQL Server kumulatīvos atjauninājumus:

Jaunākais kumulatīvais atjauninājums SQL Server 2016

Jaunākais kumulatīvais atjauninājums SQL Server 2017

Jaunākais kumulatīvais atjauninājums SQL Server 2014

Statuss

Microsoft apstiprināja, ka šī ir problēma Microsoft produktos, kas norādīti sadaļā "attiecas uz".

Atsauces

Uzziniet par terminoloģiju, ko Microsoft izmanto, lai aprakstītu programmatūras atjauninājumus.