최근에 JSON 직렬화를 사용하여 매개 변수 배열을 SQL Server 저장 프로 시저에 전달하는 팀에 합류했습니다. SQL Server 저장 프로 시저에서는 deserialize되고 필요한 값이 추출됩니다. 즉, 각 저장 프로 시저에는 '@Parameters 'VARCHAR (MAX) 유형의 매개 변수. 명령을 만들고 실행하는 프레임 워크는 C#으로 작성되며 표준 .NET 유형 (SqlCommand, SQlParameter)을 사용합니다.JSON 직렬화 및 .NET SQL 매개 변수
직렬화 된 내용의 길이가 저장 프로 시저가 적절하지 않은 임계 값보다 길 때 실행되지만 예외는 발생하지 않습니다. 아무 일도 일어나지 않는 것 같습니다. SQL 프로파일 러 실행 SQL Server에서 저장 프로 시저를 실행하려는 시도가 없음을 확인했습니다.
예 : 하나의 경우에는 8 개 이하의 속성이 직렬화되는 형식의 인스턴스가 30 개에 불과합니다. 직렬화가 성공하고 값은 SqlCommand의 매개 변수 컬렉션에있는 sql 매개 변수에 할당됩니다 (단 하나의 매개 변수 만 있음). 명령이 실행되지만 아무 일도 일어나지 않습니다. 유형의 발생이 적 으면 성공합니다. 성공하지 못하면 예외가 발생하지 않습니다.
사용 : SQL Server 2008 C# .NET 4.0 JSON 직렬화는 Newtonsoft에서 제공합니다. 코드의 SqlParameter는 varchar max로 만들어집니다. 클라이언트 서버 아키텍처 - 중간 서비스가 없습니다.
SqlCommand를 사용하여 SQL 매개 변수로 전달되는 JSON serialize 된 값의 한계를 알고 있거나이 동작을 일으킬 수있는 아이디어가 있습니까?
샘플 @Parameters 값을 제공해 주시겠습니까? –
정확하게 형성되는 내용 자체가 아니라 내용의 길이에 문제가 있습니다. SQL 매개 변수로 Json 직렬화 된 값을 전달할 때 누군가가 크기 제한을 알고 있는지 여부 만 묻는 것은 사실입니다. – Trev