Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL Database w usłudze Microsoft Fabric
Typ danych JSON przechowuje dokumenty JSON w natywnym formacie binarnym.
Typ JSON zapewnia wysokiej wierności magazyn dokumentów JSON zoptymalizowany pod kątem łatwego wykonywania zapytań i manipulowania nimi oraz zapewnia następujące korzyści wynikające z przechowywania danych JSON jako varchar lub nvarchar:
- Wydajniejsze operacje odczytu, ponieważ dokument jest już analizowany
- Wydajniejsze zapisy, ponieważ zapytanie może aktualizować poszczególne wartości bez uzyskiwania dostępu do całego dokumentu
- Wydajniejszy magazyn zoptymalizowany pod kątem kompresji
- Brak zmian w zgodności z istniejącym kodem
Typ json wewnętrznie przechowuje dane przy użyciu kodowania UTF-8, Latin1_General_100_BIN2_UTF8. To zachowanie jest zgodne ze specyfikacją JSON.
Aby uzyskać więcej informacji na temat wykonywania zapytań dotyczących danych JSON, zobacz dane JSON w programie SQL Server.
Przykładowa składnia
Składnia użycia typu json jest podobna do wszystkich innych typów danych programu SQL Server w tabeli.
column_name JSON [ NOT NULL | NULL ] [CHECK ( constraint_expression ) ] [ DEFAULT ( default_expression ) ]
Typ danych JSON może być używany w definicji kolumny zawartej w instrukcji CREATE TABLE . Przykład:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
);
Ograniczenia można określić jako część definicji kolumny. Przykład:
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
Dostępność funkcji
Obsługa funkcji JSON została po raz pierwszy wprowadzona w programie SQL Server 2016 (13.x). Natywny typ json został wprowadzony w Azure SQL Database oraz Azure SQL Managed Instance, a jest również dostępny w SQL Server 2025 (17.x).
Typ danych JSON jest dostępny na wszystkich poziomach zgodności bazy danych.
Note
- jest ogólnie dostępna dla usług Azure SQL Database i Azure SQL Managed Instance z zasadami aktualizacjiprogramu SQL Server 2025 lub Always-up-to-date.
- program jest w wersji zapoznawczej dla programu SQL Server 2025 (17.x) i bazy danych SQL w usłudze Fabric.
Metoda modify
Note
Metoda jest modify obecnie w wersji podglądowej i dostępna tylko w SQL Server 2025 (17.x).
Typ danych JSON obsługuje metodę modify . Służy modify do modyfikowania dokumentów JSON przechowywanych w kolumnie. Metoda modify ma optymalizacje do przeprowadzania modyfikacji w miejscu danych tam, gdzie to możliwe, i jest preferowanym sposobem modyfikowania dokumentu JSON w kolumnie json .
W przypadku ciągów JSON, jeśli nowa wartość jest mniejsza lub równa istniejącej wartości, modyfikacja w miejscu jest możliwa.
W przypadku liczb JSON, jeśli nowa wartość jest tego samego typu lub w zakresie istniejącej wartości, modyfikacja w miejscu jest możliwa.
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;
Obsługa funkcji
Wszystkie funkcje JSON obsługują typ danych JSON bez zmian kodu ani różnicy użycia.
-
OPENJSONobecnie nie obsługuje typu danych JSON na niektórych platformach. Aby uzyskać więcej informacji, zobacz Ograniczenia.
Aby uzyskać pełną listę funkcji JSON, zobacz Funkcje JSON.
Indexes
Brak specjalnych typów indeksów dla danych JSON.
Nie można użyć typu json jako kolumny klucza w instrukcji CREATE INDEX . Kolumnę json można jednak określić jako dołączona kolumna w definicji indeksu. Ponadto kolumna json może pojawić się w WHERE klauzuli filtrowanego indeksu.
Conversion
Jawna konwersja przy użyciu CAST lub CONVERT z typu json można wykonać do typów char, nchar, varchar i nvarchar . Wszystkie niejawne konwersje nie są dozwolone, podobnie jak zachowanie pliku XML. Podobnie tylko char, nchar, varchar i nvarchar można jawnie przekonwertować na typ danych json .
Nie można używać typu danych JSON z typem sql_variant ani przypisanym do zmiennej lub kolumny sql_variant. To ograniczenie podobne do varchar(max), varbinary(max), nvarchar(max), xml i CLR oparte na danych.
Istniejące kolumny, takie jak varchar(max) można przekonwertować na format json przy użyciu polecenia ALTER TABLE. Podobnie jak w przypadku typu danych XML , nie można przekonwertować kolumny JSON na dowolny ciąg lub typy binarne przy użyciu polecenia ALTER TABLE.
Aby uzyskać więcej informacji, zobacz Konwersja typów danych (aparat bazy danych).
Compatibility
Typ danych JSON może być używany jako parametr lub zwracany typ w funkcji zdefiniowanej przez użytkownika lub parametr procedury składowanej. Typ json jest zgodny z wyzwalaczami i widokami.
Obecnie natywny format narzędzia bcp zawiera dokument json jako varchar lub nvarchar. Musisz określić plik formatu, aby wyznaczyć kolumnę json .
Tworzenie typu aliasu przy użyciu CREATE TYPE dla typu danych json nie jest dozwolone. To zachowanie jest takie samo jak typ danych XML .
Użycie SELECT ... INTO z typem danych JSON tworzy tabelę z typem json .
Limitations
Zachowanie zwraca CAST ( ... AS JSON) typ danych JSON , ale procedura składowana systemu sp_describe_first_result_set nie zwraca poprawnie typu danych JSON . W związku z tym wiele klientów i sterowników dostępu do danych widzi typ danych varchar lub nvarchar .
- Obecnie TDS >= 7.4 (z utF-8) widzi varchar(max) z
Latin_General_100_bin2_utf8. - Obecnie TDS < 7.4 widzi nvarchar(max) z sortowaniem bazy danych.
OPENJSON() Obecnie funkcja nie akceptuje typu danych JSON na niektórych platformach. Obecnie jest to niejawna konwersja. Jawnie przekonwertuj na nvarchar(max) najpierw.
- W SQL Server 2025 (17.x) funkcja obsługuje
OPENJSON()json. Aby uzyskać więcej informacji, zobacz Kluczowe możliwości JSON w programie SQL Server 2025.
Ograniczenia rozmiaru plików
Limity rozmiaru danych JSON w magazynie:
| (No changes needed) | Limitation |
|---|---|
| Rozmiar typu danych JSON (binarny) | Do 2 GB |
| Liczba unikatowych kluczy | Maksymalnie 32K |
| Rozmiar ciągu klucza | 7998 bajtów |
| Rozmiar wartości na ciąg | 536870911 bajty |
| Liczba właściwości w jednym obiekcie | Do 65535 |
| Liczba elementów w jednej tablicy | Do 65535 |
| Liczba poziomów zagnieżdżonych w dokumencie JSON | 128 |