0

이 ADO.NET 명령 개체가 있으며 일부 매개 변수를 설정하고 성공적으로 실행할 수 있습니다.구조적 매개 변수를 사용하여 명령 준비

_mergecommand.Parameters.Add (새 SqlParameter ("values", SqlDbType.Structured))); _mergecommand.Parameters [ "values"]. TypeName = "strlist"; _mergecommand.Parameters [ "values"]. Direction = ParameterDirection.Input;

_mergecommand.Parameters [ "values"]. 값 = valuelist; _mergecommand.ExecuteNonQuery();

잘 작동합니다. 하지만이 명령을 실행하기 전에이 명령을 준비하고 싶습니다. 왜냐하면이 수백만 번 실행해야하기 때문입니다. SQL Server 2008을 사용하고 있습니다. 준비하려고하면이 오류가 발생합니다.

SqlCommand.Prepare 메서드를 사용하려면 모든 가변 길이 매개 변수에 0 이외의 크기를 명시 적으로 설정해야합니다.

어떻게하면 좋을까요?

답변

0

이렇게 명령을 사용하여 수백만 번해야하는 경우에는 좋은 전략이 아닙니다.

데이터를 XML 문자열로 serialize하여 단일 인수로 전달할 수 있습니까? 네트워크 및 SQL Server에 대한로드가 훨씬 적습니다 .... 클라이언트가 훨씬 더 어려워 질지라도.

_mergecommand.Parameters.Add("@values", System.Data.SqlDbType.NVarChar, 100).Value = foo; 

은 당신이 원하는 무엇을 같은 그 이상이다 : 당신이 그런 식으로 일에 죽은 세트 인 경우

, 어쩌면 당신이 찾고있는 것은 SqlCommand.Parameters.Add 방법의 과부하는 무엇입니까?

+0

내 질문에 SqlDbType.Structured하지 NVARCHAR – Hash

+0

동일한 구문을 위해 특별히입니다 적용됩니다. 필자는 매개 변수 길이를 지정할 수있는 예제를 제공했습니다. –

+0

직접 사용해 보셨습니까? 구조화 된 데이터 유형의 크기는 얼마입니까? – Hash

1

이 오래지만, 사용 -1 크기로하는 정답, 예를 들어있을 나타나지 않습니다

_mergecommand.Parameters.Add(new SqlParameter("values", SqlDbType.Structured, -1));