Megosztás a következőn keresztül:


UTF-8-támogatás az SQL Serverhez készült OLE DB-illesztőprogramban

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

OLE DB-illesztő letöltése

A Microsoft OLE DB Driver for SQL Server (18.2.1-es verzió) támogatja az UTF-8-kiszolgálókódolást. További információ az SQL Server UTF-8 támogatásáról:

Az illesztőprogram 18.4.0-s verziója támogatja az UTF-8-ügyfélkódolást (a Windows 10 és a Windows 11 Régióbeállítások területén a "Unicode UTF-8 használata a világnyelv támogatásához" jelölőnégyzettel engedélyezve).

Megjegyzés:

Az SQL Serverhez készült Microsoft OLE DB-illesztő a GetACP függvénnyel határozza meg a DBTYPE_STR bemeneti puffer kódolását.

A 18.4-es verziótól kezdve támogatottak azok a forgatókönyvek, amelyekben a GetACP UTF-8 kódolást ad vissza (a Windows 10 és a Windows 11 Régió beállításai területén a "Unicode UTF-8 használata a világnyelv támogatásához" jelölőnégyzettel engedélyezve). A korábbi verziókban, ha a puffernek Unicode-adatokat kell tárolnia, a puffer adattípusát DBTYPE_WSTR (UTF-16 kódolású) értékre kell állítani.

Adatbeszúrás UTF-8 kódolású CHAR vagy VARCHAR oszlopba

Amikor bemeneti paraméterpuffert hoz létre a beszúráshoz, a puffer leírása DBBINDING-struktúrák tömbje segítségével történik. Minden DBBINDING-struktúra egyetlen paramétert társít a fogyasztó pufferéhez, és olyan információkat tartalmaz, mint az adatérték hossza és típusa. A CHAR típusú bemeneti paraméterpuffer esetében a DBBINDING-struktúra wType értékét DBTYPE_STR kell beállítani. A WCHAR típusú bemeneti paraméterpuffer esetében a DBBINDING-struktúra wType értékét DBTYPE_WSTR értékre kell állítani.

Paraméterekkel rendelkező parancs végrehajtásakor az illesztőprogram paraméter adattípus-információkat hoz létre. Ha a bemeneti puffer típusa és a paraméter adattípusa egyezik, az illesztőben nem történik átalakítás. Ellenkező esetben az illesztőprogram a bemeneti paraméter pufferét a paraméter adattípusává alakítja. A paraméter adattípusát a felhasználó explicit módon állíthatja be az ICommandWithParameters::SetParameterInfo meghívásával. Ha az információ nem adandó meg, az illesztőprogram a paraméter adattípus-adatait a (a) oszlop metaadatainak lekérésével nyeri le a kiszolgálóról az utasítás elkészítésekor, vagy (b) megkísérli az alapértelmezett átalakítást a bemeneti paraméter adattípusából.

A bemeneti paraméter pufferét az illesztő vagy a kiszolgáló a bemeneti puffer adattípusától és a paraméter adattípusától függően konvertálhatja a kiszolgáló oszlopelütemezésére. Az átalakítás során adatvesztés léphet fel, ha az ügyfélkódlap vagy az adatbázis rendezési kódlapja nem tudja megjeleníteni a bemeneti puffer összes karakterét. Az alábbi táblázat az UTF-8-kompatibilis oszlopba való adatbeszúrás átalakítási folyamatát ismerteti:

Puffer adattípusa Paraméter adattípusa Conversion Felhasználói óvintézkedések
DBTYPE_STR DBTYPE_STR Kiszolgáló konvertálása ügyfélkódlapról adatbázis-rendezési kódlapra; kiszolgáló konvertálása adatbázis-rendezési kódlapról oszlop rendezési kódlapra. Győződjön meg arról, hogy az ügyfélkódlap és az adatbázis rendezési kódlapja a bemeneti adatokban szereplő összes karaktert képviselheti. Lengyel karakter beszúrásához például az ügyfélkódlap beállítható 1250-re (ANSI Central European), és az adatbázis-rendezés a lengyelt használhatja rendezési tervezőként (például Polish_100_CI_AS_SC), vagy engedélyezve lehet az UTF-8.
DBTYPE_STR DBTYPE_WSTR Illesztőprogram konvertálása ügyfélkódlapról UTF-16 kódolásra; kiszolgáló átalakítása UTF-16 kódolásról oszlop rendezési kódlapra. Győződjön meg arról, hogy az ügyfélkódlap a bemeneti adatokban szereplő összes karaktert meg tudja jelölni. Lengyel karakter beszúrásához például az ügyfélkódlap 1250 -re (ANSI Central European) állítható be.
DBTYPE_WSTR DBTYPE_STR Illesztőprogram konvertálása UTF-16 kódolásról adatbázis-rendezési kódlapra; kiszolgáló konvertálása adatbázis-rendezési kódlapról oszlop rendezési kódlapra. Győződjön meg arról, hogy az adatbázis rendezési kódlapja a bemeneti adatokban szereplő összes karaktert képviselheti. Lengyel karakter beszúrásához például az adatbázis rendezési kódlapja a lengyelt használhatja rendezési tervezőként (például Polish_100_CI_AS_SC), vagy engedélyezve lehet az UTF-8.
DBTYPE_WSTR DBTYPE_WSTR Kiszolgáló átalakítása UTF-16-ról oszlop rendezési kódlapra. Nincs.

Adatlekérés UTF-8 kódolású CHAR vagy VARCHAR oszlopból

A lekért adatok pufferének létrehozásakor a puffer leírása DBBINDING-struktúrák tömbjének használatával történik. Minden DBBINDING-struktúra egyetlen oszlopot társít a beolvasott sorhoz. Az oszlopadatok CHAR-ként való lekéréséhez állítsa a DBBINDING-struktúra wType értékét DBTYPE_STR. Az oszlopadatok WCHAR-ként való lekéréséhez állítsa a DBBINDING-struktúra wType értékét DBTYPE_WSTR értékre.

Az eredménypuffertípus-mutató DBTYPE_STR esetében az illesztő az UTF-8 kódolású adatokat az ügyfélkódolássá alakítja. A felhasználónak gondoskodnia kell arról, hogy az ügyfélkódolás az UTF-8 oszlopból származó adatokat képviselje, ellenkező esetben adatvesztés történhet.

Az eredménypuffertípus-mutató DBTYPE_WSTR esetében az illesztő az UTF-8 kódolású adatokat UTF-16 kódolásúvá alakítja.

Kommunikáció olyan kiszolgálókkal, amelyek nem támogatják az UTF-8-at

Az SQL Serverhez készült Microsoft OLE DB-illesztő biztosítja, hogy az adatok a kiszolgáló számára érthető módon legyennek elérhetők. Amikor adatokat szúr be az UTF-8-kompatibilis ügyfelekről, az illesztő lefordítja az UTF-8 kódolt sztringeket az adatbázis rendezési kódlapjára, mielőtt elküldené azokat a kiszolgálónak.

Megjegyzés:

Az ISequentialStream felület használata az UTF-8 kódolású adatok régi szövegoszlopba való beszúrásához csak az UTF-8-at támogató kiszolgálókra korlátozódik. További részletekért lásd a BLOB-okat és az OLE-objektumokat.

Lásd még:

OLE DB illesztőprogram a SQL Server funkciókhoz
UTF-16-támogatás az SQL Serverhez készült OLE DB-illesztőprogramban