2012-09-06 2 views
4

어디서나 답변을 찾을 수 없다는 것이 빠른 질문입니다. 나는 한 유형의 데이터베이스를 다른 유형으로 자주 변환해야하기 때문에 MS SQL Server 데이터베이스를 앞뒤로 변환하는 프로그램을 작성하고있다. 내가 겪고있는 문제는 최대 길이가 4000 이상인 nvarchar 변수를 선언 할 수 없다는 것입니다.nvarchar 한도에 대해 혼란 스럽습니다.

"매개 변수 '설명'에 제공된 크기 (6000)가 허용 된 최대 값 (4000). "

그러나 분명히 원래 데이터베이스에서 nvarchar (6000)로 정의됩니다. max_length가 6000이기 때문에 적어도 max_length가 -1 인 경우 사용하십시오. 나는 단지 nvarchar (max)를 사용할 수 있다는 것을 알고 있지만 데이터베이스를 변환하는 소프트웨어를 쓰고 있다면 가능한 한 원본 그대로 유지하려고합니다.

최근에 nvarchar 최대 한도가 변경 되었습니까, 아니면 놓친 일부 설정입니까?

+1

'max_length'는 문자가 아닌 바이트 단위입니다. * 문자 * 제한이 4000이기 때문에'nvarchar (6000)'이 유효하지 않습니다. –

+1

Nvarchar에 대해 1-4000 또는 Max를 가질 수 있습니다. Nvarchar가 유니 코드 데이터를 저장하기 때문에 이전 varchar보다 두 배 많은 공간이 필요합니다. Nvarchar (3000) 크기가 6000으로 예상됩니다. – Bridge

+0

물론, 네가 옳아. 최대 길이는 분명히 바이트 단위입니다. 감사합니다! – user1277327

답변

3

주어진 크기 (6000)는 길이로 표시 할 때 유니 코드의 문자 수입니다. 한계 4000은 nvarchar (xxxx) 및 nvarchar (max)의 내부 저장소가 다르기 때문입니다. 4000 자 이상의 저장소를 원한다면 nvarchar (max)를 사용하십시오.

관련 문제