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


JSON-adattípus

A következőkre vonatkozik: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL Database a Microsoft Fabricben

A json-adattípus natív bináris formátumban tárolja a JSON-dokumentumokat.

A json típus a JSON-dokumentumok nagy megbízhatóságú tárolását biztosítja, amely egyszerű lekérdezéshez és kezeléshez van optimalizálva, és a következő előnyöket nyújtja a JSON-adatok varcharként vagy nvarcharként való tá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 UTF-8 kódolással Latin1_General_100_BIN2_UTF8tárolja az adatokat. 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 többi SQL Server-adattípusához.

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

A json-adattípus egy utasítás oszlopdefiníciójában CREATE TABLE használható. Például:

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

A korlátozások az oszlopdefiníció részeként adhatók meg. 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 az Azure SQL Database-ben és Azure SQL Managed Instance-ban vezették be, és elérhető az SQL Server 2025-ben (17.x) is.

A json-adattípus minden adatbáziskompatibilitási szinten elérhető.

Note

A JSON-adattípus:

  • általánosan elérhető az Azure SQL Database-hez és a felügyelt Azure SQL-példányhoz az SQL Server 2025 vagy az Always-up-todátumfrissítési szabályzattal.
  • előzetes verzióban érhető el az SQL Server 2025 (17.x) és az SQL Database a Fabricben.

A módosítási módszer

Note

A modify módszer jelenleg előzetes verzióban van, és csak SQL Server 2025-ben (17.x) érhető el.

A json-adattípus támogatja a metódust modify . Az oszlopban tárolt JSON-dokumentumok módosítására használható modify . A modify módszer optimalizálásokkal rendelkezik az adatok helyben történő módosításához, ahol csak lehetséges, és a JSON-dokumentumok JSON-oszlopban való módosításának előnyben részesített módja.

JSON-sztringek esetén, ha az új érték kisebb vagy egyenlő a meglévő értéknél, akkor a helyben történő módosítás lehetséges.

JSON-számok esetén, ha az új érték azonos típusú, vagy a meglévő érték tartományán belül van, akkor helyben módosítható.

DROP TABLE IF EXISTS JsonTable;

CREATE TABLE JsonTable
(
    id INT PRIMARY KEY,
    d JSON
);

INSERT INTO JsonTable (id, d)
VALUES (1, '{"a":1, "b":"abc", "c":true}');

UPDATE JsonTable
SET d.modify('$.a', 14859)
WHERE id = 1;

UPDATE JsonTable
SET d.modify('$.b', 'def')
WHERE id = 1;

Függvénytámogatás

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

  • OPENJSON egyes platformokon jelenleg nem támogatja a json-adattípust . További információ: Korlátozások.

A JSON-függvények teljes listájáért tekintse meg a JSON-függvényeket.

Indexes

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

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

Conversion

A JSON-típussal CAST vagy CONVERT a JSON-típusból történő explicit átalakítás elvégezhető char, nchar, varchar és nvarchar típusokra. Az xml viselkedéséhez hasonlóan az összes implicit konverzió nem engedélyezett. Hasonlóképpen csak a karakter, az nchar, a varchar és az nvarchar konvertálható explicit módon json-adattípussá .

A json-adattí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ó a varchar(max), varbinary(max), nvarchar(max), xml és CLR-alapú adattípusokhoz.

A meglévő oszlopokat, például a varchar(max)json értékre konvertálhatja a használatával ALTER TABLE. Az xml-adattípushoz hasonlóan a JSON-oszlopokat nem konvertálhatja a sztringek vagy bináris típusok ALTER TABLEegyikére sem.

További információ: Adattípus-átalakítás (adatbázismotor).

Compatibility

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

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

Az aliastípus json-adattípussal CREATE TYPE történő létrehozása nem engedélyezett. Ez a viselkedés megegyezik az XML-adattípussal .

A json-adattípus használatával SELECT ... INTO létrehoz egy json típusú táblát.

Limitations

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

  • Jelenleg a TDS >= 7,4 (UTF-8) a varchar(max) függvényt látja a következővel Latin_General_100_bin2_utf8: .
  • A TDS < 7.4 jelenleg az adatbázis-rendezéssel rendelkező nvarchar(max) elemet látja.

OPENJSON() A függvény jelenleg nem fogadja el a json-adattípust egyes platformokon. Ez jelenleg implicit konverzió. Először explicit módon konvertálja nvarchar(max) értékre.

Méretkorlátozások

A tárolóban lévő JSON-adatok méretkorlátai:

szakterület Limitation
JSON-adattípus mérete (bináris) Legfeljebb 2 GB
Egyedi kulcsok száma Legfeljebb 32K
Kulcssztring-méret szerint 7998 bájt
Sztringenkénti értékméret 536870911 bájt
Tulajdonságok száma egy objektumban Legfeljebb 65535
Elemek száma egy tömbben Legfeljebb 65535
Beágyazott szintek száma a JSON-dokumentumban 128