Как в SQL Server проверить, является ли строка допустимой JSON и все ли ключи уникальны?
Согласно Документация T-SQL, обычный метод ISJSON не проверяет уникальность ключей на одном уровне.

Для этого вы можете использовать Рекурсивное общее табличное выражение. EG что-то вроде:
DECLARE @json NVARCHAR(4000) = N'{
"StringValue":"John",
"IntValue":45,
"TrueValue":true,
"FalseValue":false,
"NullValue":null,
"ArrayValue":["a","r","r","a","y"],
"ObjectValue":{"obj":"ect"}
}';
with q as
(
select [key] path, [key], value, type, 0 level
from openjson(@json)
union all
select concat(q.path,'\',n.[key]), n.[key], n.value, n.type, q.level + 1
from q
cross apply openjson(q.value) n
where q.type in (4,5)
)
select *, count(*) over (partition by path) pathCount
from q
Какая версия SQL-сервера? 2016 и новее имеет удобную встроенную проверку JSON. Искать ISJSON, JSON_VALUE, JSON_QUERY