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


JSON-adattípus (előzetes verzió)

A következőkre vonatkozik:Azure SQL DatabaseFelügyelt Azure SQL-példány

Az új natív json adattípus, amely natív bináris formátumban tárolja a JSON-dokumentumokat.

A json típus a JSON-dokumentumok magas szintű, egyszerű lekérdezésre és manipulációra optimalizált tárolását biztosítja, és az alábbi előnyöket nyújtja a JSON-adatok varchar vagy nvarchartárolásához:

  • Hatékonyabb olvasás, mivel a dokumentum már elemzésre került
  • Hatékonyabb írás, mivel a lekérdezés a teljes dokumentum elérése nélkül is frissítheti az egyes értékeket
  • Hatékonyabb tárolás tömörítésre optimalizálva
  • Nincs változás a meglévő kóddal való kompatibilitásban

A json típus belsőleg tárolja az adatokat UTF-8 kódolással, Latin1_General_100_BIN2_UTF8. Ez a viselkedés megfelel a JSON-specifikációnak.

További információ a JSON-adatok lekérdezéséről: JSON-adatok az SQL Server.

Mintaszintaxis

A json típus használati szintaxisa hasonló a tábla összes többi SQL Server-adattípusához.

column_name JSON [NOT NULL | NULL] [CHECK(constraint_expression)] [DEFAULT(default_expression)]

A json típus egy CREATE TABLE utasításban található oszlopdefinícióban használható, például:

CREATE TABLE Orders (order_id int, order_details JSON NOT NULL);

A korlátozásokat az oszlopdefiníció részeként lehet megadni, például:

CREATE TABLE Orders (order_id int, order_details JSON NOT NULL
   CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);

Szolgáltatás rendelkezésre állása

A JSON-függvények támogatása először az SQL Server 2016-ban (13.x) jelent meg. A natív json típust 2024-ben vezették be az Azure SQL Database-ben és a felügyelt Azure SQL-példányban.

json minden adatbázis-kompatibilitási szinten elérhető.

Jegyzet

A JSON-adattípus jelenleg előzetes verzióban érhető el az Azure SQL Database és az Azure SQL Managed Instance esetében, amely az Always-up-to-date frissítési szabályzattalkonfigurálva van. Nem érhető el az SQL Server 2022 frissítési szabályzattalkonfigurált Felügyelt Azure SQL-példányban.

Függvénytámogatás

Minden JSON-függvény támogatja a json típust, és nincs szükség kódmódosításra vagy használati különbségre.

A JSON-függvények teljes listáját JSON-függvényekcímű cikkben találja.

Indexek

A JSON-adatokhoz nincsenek speciális indextípusok.

A json típus nem használható kulcsoszlopként egy CREATE INDEX utasításban. Egy json oszlop azonban megadható egy indexdefinícióban szereplő oszlopként. Emellett egy json oszlop is megjelenhet a szűrt index WHERE záradékában.

Konverzió

Az CAST típusból CONVERT vagy használatával történő explicit átalakítás elvégezhető karakter, nchar, varcharés nvarchar típushoz. Az összes implicit átalakítás nem engedélyezett, hasonlóan az xmlviselkedéséhez. Hasonlóképpen csak karakter, nchar, varcharés nvarchar konvertálható explicit módon a json típusra.

A json típus nem használható sql_variant típussal, és nem rendelhető hozzá sql_variant változóhoz vagy oszlophoz. Ez a korlátozás hasonló varchar(max), varbinary(max), nvarchar(max), xmlés CLR-alapú adattípusokhoz.

Meglévő oszlopokat, például varchar(max) oszlopot json alakíthat át ALTER TABLEhasználatával. Az xml adattípushoz hasonlóan nem konvertálhat json oszlopot a ALTER TABLEhasználatával.

További információ: Adattípus-átalakítás.

Kompatibilitás

A json típus használható paraméterként vagy visszatérési típusként egy felhasználó által definiált függvényben vagy egy tárolt eljárás paramétereként. A json típusa kompatibilis az eseményindítókkal és a nézetekkel.

A bcp eszköz natív formátuma jelenleg a json dokumentumot tartalmazza varchar vagy nvarchar. Meg kell adnia egy formátumfájlt egy json adattípus-oszlop kijelöléséhez.

Nem lehet aliastípust létrehozni CREATE TYPE a json típushoz. Ez ugyanaz a viselkedés, mint xml típusa.

A SELECT ... INTO JSON-típussal való használatával létrehoz egy JSON-típussal rendelkező táblát.

Korlátozások

  • A CAST ( ... AS JSON) viselkedése egy json típust ad vissza, de a sp_describe_first_result_set rendszer által tárolt eljárás nem helyesen adja vissza a json adattípust. Ezért sok adatelérési ügyfél és illesztőprogram varchar vagy nvarchar adattípust fog látni.

    • Jelenleg a TDS >= 7,4 (UTF-8)varchar(max)Latin_General_100_bin2_utf8.
    • A TDS < 7.4 jelenleg nvarchar(max) lát adatbázis-rendezéssel.
  • A OPENJSON() függvény jelenleg nem fogadja el a json típust, amely jelenleg implicit konverzió. Először explicit módon konvertálja nvarchar(max).