Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL 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
- á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.
-
OPENJSONegyes 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.
- Az SQL Server 2025-ben (17.x) a
OPENJSON()függvény támogatja a json-t. További információ: Key JSON capabilities in SQL Server 2025.
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 |
Kapcsolódó tartalom
- JSON-dokumentumok tárolása
- JSON-adatok AZ SQL Server