KB4055758 – JAVÍTÁS: A CHAR és a BINARY adatok végén lévő követő üres cellák visszaadásának következetlen viselkedése SQL Server

Hatókör
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) SQL Server 2016 Service Pack 1 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 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

Tünetek

Tegyük fel, hogy van egy olyan Microsoft SQL Server-tábla, amelyre épül egy vagy több index. Amikor lekérdezést végez a táblán, előfordulhat, hogy az SQL Server nem konzisztens adatkitöltést végez a CHAR és a BINARY oszlopokban. A CHAR és a BINARY adatoszlop végén lévő záró üres cellák visszaadásának inkonzisztens viselkedése az alábbi feltételektől függ:

  • A ANSI_PADDING beállításai, amikor oszlopokat hoz létre a SQL Server táblázatban.
  • Az a döntés, hogy táblakeresést vagy indexkeresést végez-e az oszlopokon.

Ok

Bizonyos esetekben az SQL Server olyan optimalizálást hajthat végre, amely lehetővé teszi, hogy a gyorsabb adatkézbesítés érdekében megkerüljön számos műveletet. A problémát az okozza, hogy az SQL Server nem ismeri fel, hogy az optimalizálás nem alkalmazható a fenti forgatókönyvre.

További információ

Az SQL Server ilyen viselkedése nem felel meg a következő cikkben leírt viselkedésnek: Char és Varchar adatok használata.

Megjegyzés

Ha a ANSI_PADDING be van kapcsolva egy char NULL oszlop létrehozásakor, az ugyanúgy viselkedik, mint a char NOT NULL oszlopok: az értékek az oszlop méretének megfelelően lesznek jobb gombbal kitöltve. Ha a ANSI_PADDING KI értékű, amikor létrehoz egy char NULL oszlopot, akkor úgy viselkedik, mint egy OFF beállítású ANSI_PADDING varchar oszlop: a záró üres cellák le lesznek csonkítva.

Megoldás

A hibát az SQL Server következő összegző frissítéseiben javítottuk:

2. összegző frissítés az SQL Server 2017-hez

9-es összegző frissítés az SQL Server 2016-hoz

6. összegző frissítés az SQL Server 2016 SP1-hez

8-as összegző frissítés az SQL Server 2014 SP2-höz

7-es összegző frissítés az SQL Server 2014 SP1-hez

Az SQL Server összegző frissítéseinek ismertetése:

Az SQL Server minden új összegző frissítése tartalmazza az összes gyorsjavítást és minden biztonsági javítást, amely az előző kumulatív frissítésben szerepelt. Tekintse meg az SQL Server legújabb összegző frissítéseit:

Az SQL Server 2017 legújabb összegző frissítése

Az SQL Server 2016 legújabb összegző frissítése

Az SQL Server 2014 legújabb összegző frissítése

Állapot

A Microsoft megerősítette, hogy ez a probléma "A következőkre vonatkozik" szakaszban felsorolt Microsoft-termékekre vonatkozik

Hivatkozások

Ismerje meg a Microsoft szoftverfrissítésekkel kapcsolatos terminológiáját.