2012-05-15 2 views

답변

17

당신은 테이블을 변경하는 표준 구문을 사용할 수 있습니다 :

ALTER TABLE some_table ALTER COLUMN some_column nvarchar(max) 

당신은 아마 예상대로 작동 확인, 그러나 어떤 인덱스를 다시 작성하는 것이 좋습니다.

2

어떤 일이 일어나 든 항상 백업을 가져 가면 상황이 돌아 가지 않을 수 있습니다.

varchar(max)에서 nvarchar(max)으로 변경하면 데이터가 손실되지 않아야합니다.

사이드 참고 : varchar(max)에 다른 방향 nvarchar(max)으로 변경 한 경우 프로세스가 어떤 존재한다면 확장 된 문자를 변환해야하는 것처럼 당신은 문제가있을 수 있습니다.

7

(I 온라인으로 발생합니다 ALTER COLUMN을 믿지 않기 때문에) 혼란을 최소화하기 위해 또 다른 옵션이다 :

이제
ALTER TABLE dbo.table ADD new_column NVARCHAR(MAX); -- metadata operation 

당신이 파도/배치/거래 데이터를 업데이트하는 대신에 변경을 적용 할 수 있습니다 전체 테이블을 하나의 긴 트랜잭션으로 처리합니다. 데이터가 복사되었다고 확신하면 이전 열을 삭제하고 새 열의 이름을 바꾸고 영향을받는 색인을 다시 만들 수 있습니다 (MAX 열은 색인의 키에있을 수 없지만 의도하지 않게 INCLUDE 정의에 넣습니다. 어쨌든 질문해야합니다.

아직 사용되지 않는 공간을 다시 요구하기 위해 모든 색인을 다시 작성하려는 경우 (Enterprise Edition을 사용하는 경우 온라인으로 수행 할 수 있음).

+0

아주 좋은 점 +1 – RThomas

관련 문제