2009-04-10 2 views
12

저는 현재 SQL Server 2000을 백엔드로 실행하는 asp.net 웹 사이트 프로젝트를 상속 받았습니다.varchar (max) MS SQL Server 2000, 문제가 있습니까?

저는 SQL Server 2005 Express를 사용하여 db의 로컬 복사본에서 일부 데이터베이스 변경 작업을 수행했습니다. 나는 varchar(max) 컬럼을 사용하여 테이블을 생성했다. 그들은 임의의 길이의 XHTML 스 니펫을 저장하는 데 사용됩니다. 나는이 건너 온 유래에 주위를 검색하는 중에

는 : Are there any disadvantages to always using nvarchar(MAX)?

사용자 mattruma 그는 SQL 서버에 varchar(max)를 사용하는 방법에 대한 "어려운 방법"을 발견 말합니다 2000

나는 varchar(max) 대신 무엇을 사용해야합니다 라이브 데이터베이스가 SQL Server 2000에서 실행되는 경우?

미리 도움을 청하십시오!

답변

11

varchar(MAX)처럼 들리지만 제한 사항은 라이브 DB가 SQL Server 2000을 지원하지 않는다는 것입니다. 저장할 8K 이상의 문자가있는 경우 다른 옵션 인 TEXT 열만 있으면됩니다. 그러나 TEXT 열에는 많은 제한이 있습니다.

예를 들어, 쉽게 정렬하거나 그룹화 할 수 없으며 다른 열과의 동등성을 비교할 수도 없습니다. 즉, Select * from mytable where Mytext1 = mytext2이라고 말할 수는 없습니다.

기타 관련 문제 :

  • 내가 상관없이 유니 코드를 지원하기 위해 이동하는 방식의 NText 또는 NVarchar 열을 사용하는 것이 좋습니다 것입니다.
  • 테이블에 다른 열이 많고 varchar(8000) 열이 자주 가득 찬 것 같으면 8K의 행 제한에 문제가있을 수 있습니다. 이것을 염두에 두십시오.
1

TEXT 열을 사용하십시오.

+0

텍스트 필드를 사용하면 해당 필드에서 가능한 검색을 방해 할 수 있습니다. – TheTXI

+0

@TheTXI - 해당 열을 검색하는 것과 관련된 OP 질문에 아무 것도 없습니다. –

+0

[다음 버전의 Microsoft SQL Server에서 제거 될 예정] (http://msdn.microsoft.com/en-us/library/ms187993.aspx) 때문에 TEXT 데이터 형식을 사용하지 않는 것이 좋습니다. –

15

VARCHAR(Max)은 SQL Server 2005에 도입되었으며 SQL Server 2000에서는 작동하지 않습니다. 충분히 큰 것으로 가정하고 VARCHAR(8000) 중 하나를 사용해야합니다. 그렇지 않으면 사용해야합니다 TEXT

편집 또한 염두에 두어야 하나의 행보다 다음 8060 바이트를 가질 수없는 한계가 VARCHAR(8000)로 전환 할 경우

. 따라서 varchar(8000) 테이블을 채우고 다른 큰 열이 있으면 오류가 발생합니다. 여기서 Text이 들어갑니다.

Text은 기본적으로 별도의 위치에 저장되고 포인터를 테이블에 유지하기 때문에 성능에 영향을 미칩니다. 이 동작을 변경하여 텍스트 유형이 특정 크기에 도달 할 때까지 테이블에 보관되도록하는 옵션이 있습니다. 대부분 작은 얼룩이 있다면 이것을 활성화하고 싶을 것입니다.

+0

VARCHAR (8000)로 전환해야했습니다. – mattruma

0

귀하의 필요에 따라 다릅니다. VARCHAR (MAX) 대신 TEXT 열을 사용할 수 있지만 TEXT 및 NTEXT 필드에서 비교할 수 없으므로 구현에서 해당 필드를 검색 할 필요가 없음을 확인해야합니다.

자신을 8000 자로 제한 할 수 있으면 VARCHAR (8000) 열을 사용하여 정보를 저장합니다.

+0

nvarchar (4000) 의미합니까? 또는 varchar (8000)? – gbn

+0

좋은 캐치, 나는 응답을 업데이 트했습니다. –