적용 대상: Microsoft Fabric의 SQL Server 2025(17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL 데이터베이스
json 데이터 형식은 JSON 문서를 네이티브 이진 형식으로 저장합니다.
json 형식은 간편한 쿼리 및 조작에 최적화된 JSON 문서의 충실도가 높은 스토리지를 제공하며, JSON 데이터를 varchar 또는 nvarchar로 저장하는 경우 다음과 같은 이점을 제공합니다.
- 문서가 이미 구문 분석되어 있어 더 효율적인 읽기
- 쿼리가 전체 문서에 액세스하지 않고 개별 값을 업데이트할 수 있어 더 효율적인 쓰기
- 압축에 최적화되어 더 효율적인 스토리지
- 기존 코드와의 호환성에는 변경 사항 없음
json 형식은 UTF-8 인코딩을 사용하여 데이터를 내부적으로 저장합니다Latin1_General_100_BIN2_UTF8. 이 동작은 JSON 사양과 일치합니다.
JSON 데이터 쿼리에 대한 자세한 내용은 SQL Server의 JSON 데이터를 참조하세요.
샘플 구문
json 형식의 사용 구문은 테이블의 다른 모든 SQL Server 데이터 형식과 유사합니다.
column_name JSON [ NOT NULL | NULL ] [CHECK ( constraint_expression ) ] [ DEFAULT ( default_expression ) ]
json 데이터 형식은 문에 포함된 열 정의에 CREATE TABLE 사용할 수 있습니다. 다음은 그 예입니다.
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
);
제약 조건은 열 정의의 일부로 지정할 수 있습니다. 다음은 그 예입니다.
CREATE TABLE Orders
(
order_id INT,
order_details JSON NOT NULL
CHECK (JSON_PATH_EXISTS(order_details, '$.basket') = 1)
);
기능 가용성
JSON 함수 지원은 SQL Server 2016(13.x)에서 처음 도입되었습니다. 네이티브 json 타입은 Azure SQL Database와 Azure SQL Managed Instance에서 도입되었으며, SQL Server 2025(17.x)에서도 제공됩니다.
json 데이터 형식은 모든 데이터베이스 호환성 수준에서 사용할 수 있습니다.
Note
- 는 일반적으로 SQL Server 2025 또는 Always-up-to-date업데이트 정책을 사용하여 Azure SQL Database 및 Azure SQL Managed Instance에 사용할 수 있습니다.
- 는 Fabric의 SQL Server 2025(17.x) 및 SQL 데이터베이스에 대해 미리 보기로 제공됩니다.
modify 메서드
Note
이 modify 방법은 현재 미리보기로 SQL Server 2025(17.x)에서만 사용할 수 있습니다.
json 데이터 형식은 메서드를 modify 지원합니다. 열에 저장된 JSON 문서를 수정하는 데 사용합니다 modify . 이 modify 메서드는 가능한 경우 데이터를 현재 위치로 수정하도록 최적화되어 있으며 json 열에서 JSON 문서를 수정하는 기본 방법입니다.
JSON 문자열의 경우 새 값이 기존 값보다 작거나 같으면 현재 위치 수정이 가능합니다.
JSON 번호의 경우 새 값이 동일한 형식이거나 기존 값 범위 내에 있는 경우 현재 위치 수정이 가능합니다.
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;
함수 지원
모든 JSON 함수는 코드 변경이나 사용량 차이 없이 json 데이터 형식을 지원합니다.
-
OPENJSON현재 일부 플랫폼에서 는 json 데이터 형식을 지원하지 않습니다. 자세한 내용은 제한 사항을 참조하세요.
JSON 함수의 전체 목록은 JSON 함수를 참조하세요.
Indexes
JSON 데이터에 대한 특수한 인덱스 형식은 없습니다.
json 형식은 문에서 CREATE INDEX 키 열로 사용할 수 없습니다. 그러나 json 열은 인덱스 정의에 포함된 열로 지정할 수 있습니다. 또한 json 열은 필터링된 인덱스의 WHERE 절에 나타날 수 있습니다.
Conversion
json 형식을 사용 CAST 하거나 CONVERTjson 형식에서 명시적 변환을 char, nchar, varchar 및 nvarchar 형식으로 수행할 수 있습니다. 모든 암시적 변환은 xml의 동작과 유사하게 허용되지 않습니다. 마찬가지로 char, nchar, varchar 및 nvarchar만 json 데이터 형식으로 명시적으로 변환할 수 있습니다.
json 데이터 형식은 sql_variant 형식과 함께 사용하거나 sql_variant 변수 또는 열에 할당할 수 없습니다. 이 제한은 varchar(max), varbinary(max), nvarchar(max), xml 및 CLR 기반 데이터 형식과 유사합니다.
를 사용하여 varchar(max)와 같은 기존 열을 json으로 변환할 수 있습니다ALTER TABLE.
xml 데이터 형식과 마찬가지로 json 열은 다음을 사용하여 ALTER TABLE문자열 또는 이진 형식으로 변환할 수 없습니다.
자세한 내용은 데이터 형식 변환(데이터베이스 엔진)을 참조하세요.
Compatibility
json 데이터 형식은 사용자 정의 함수의 매개 변수 또는 반환 형식 또는 저장 프로시저의 매개 변수로 사용할 수 있습니다. json 형식은 트리거 및 뷰와 호환됩니다.
현재 bcp 도구의 네이티브 형식은 json 문서를 varchar 또는 nvarchar로 포함합니다. json 열을 지정하려면 서식 파일을 지정해야 합니다.
CREATE TYPE 데이터 형식을 사용하여 별칭 형식을 만들 수 없습니다. 이 동작은 xml 데이터 형식과 동일합니다.
SELECT ... INTO 데이터 형식과 함께 사용하면 json 형식의 테이블이 만들어집니다.
Limitations
CAST ( ... AS JSON)
동작은 json 데이터 형식을 반환하지만 sp_describe_first_result_set 시스템 저장 프로시저는 json 데이터 형식을 올바르게 반환하지 않습니다. 따라서 많은 데이터 액세스 클라이언트와 드라이버는 varchar 또는 nvarchar 데이터 형식을 볼 수 있습니다.
- 현재 TDS >= 7.4(UTF-8 포함)에는 varchar(max) 가 표시됩니다
Latin_General_100_bin2_utf8. - 현재 TDS < 7.4에는 데이터베이스 데이터 정렬이 포함된 nvarchar(max) 가 표시됩니다.
현재 함수는 OPENJSON() 일부 플랫폼에서 json 데이터 형식을 허용하지 않습니다. 현재는 암시적 변환입니다. 먼저 nvarchar(max) 로 명시적으로 변환합니다.
- SQL Server 2025(17.x)에서는 이 함수가
OPENJSON()json을 지원합니다. 자세한 내용은 SQL Server 2025의 주요 JSON 기능을 참조하세요.
크기 제한
스토리지에 있는 JSON 데이터의 크기 제한:
| 분야 | Limitation |
|---|---|
| JSON 데이터 형식 크기(이진) | 최대 2GB |
| 고유 키 수 | 최대 32K |
| 키당 문자열 크기 | 7998바이트 |
| 문자열 값 크기당 | 536870911 바이트 |
| 한 개체의 속성 수 | 최대 65535 |
| 한 배열의 요소 수 | 최대 65535 |
| JSON 문서의 중첩 수준 수 | 128 |