열 너비 변경


39

열 (nvarchar) 너비를 늘리면 반드시 테이블이 삭제됩니까?

즉, 활성 사용자가있는 프로덕션 환경에서 너비를 변경할 수 있습니까?

크기가 커지면 (감소하는 것과는 달리) 이것이 문제가되지 않는다고 생각했습니다.

답변:


52

아래와 같은 T-SQL 문을 통해 수행하는 경우 테이블 삭제가 발생하지 않으며 프로덕션 환경에서 안전하게 수행 할 수 있습니다.

alter table <table> alter column <column> nvarchar(biggernumber) [not] null

SSMS 디자인 테이블 GUI를 통해 변경하는 경우 변경 구현에 사용하기로 결정한 스크립트에 따라 다릅니다. 때로는 임시 테이블에 데이터를 삽입하고 원래 테이블을 삭제하고 해당 테이블의 새 버전을 만든 다음 새 테이블에 다시 삽입합니다. 수행 할 작업을 쉽게 찾을 수있는 방법은 "스크립트 생성"버튼을 클릭하고 실행하려는 T-SQL을 보는 것입니다.


1
"스크립트 생성"버튼조차도 스크립트를 표시하기 전에 테이블을 삭제하려고한다는 경고가 표시된다고 생각했습니다.
Nick Chammas

1
오류가 발생하지만 스크립트가있는 창에서 확인 (또는 실행 등)을 클릭 할 때까지 실제로 스크립트를 실행하지 않습니다. 스크립트를 복사하고 스크립트를 표시하는 창을 취소 할 수 있습니다.
mrdenny

그러나 float에서 Decimal (n, n)으로의 변경에 대해 작동합니까?
Nishanth Shaan

테이블이 복제되면 어떤 영향을 미칩니 까? 구독자 테이블이 자동으로 업데이트되지 않는다고 가정하고 있습니까?
tmwoods

18

열의 열 너비를 늘리면 nvarchar테이블 삭제가 필요하지 않습니다. 어떤 ALTER TABLE작업 도 수행 하지 않습니다 . 테이블 또는 열 속성 변경시 제한 사항에 대한 자세한 내용은 ALTER TABLE 문을 참조하십시오 .

아래 문서에서 가장 관련성이 높은 부분을 복사했습니다.

열 크기 변경

ALTER COLUMN 절에서 컬럼 데이터 유형의 새 크기를 지정하여 컬럼의 길이, 정밀도 또는 스케일을 변경할 수 있습니다. 열에 데이터가 있으면 새 크기는 데이터의 최대 크기보다 작을 수 없습니다. 또한 열이 varchar, nvarchar 또는 varbinary 데이터 형식이고 인덱스가 PRIMARY KEY 제약 조건의 결과가 아닌 경우 열을 인덱스에 정의 할 수 없습니다. 예 P를 참조하십시오.

잠금 및 ALTER TABLE

ALTER TABLE에 지정된 변경 사항이 즉시 구현됩니다. 변경시 테이블의 행을 수정해야하는 경우 ALTER TABLE은 행을 업데이트합니다. ALTER TABLE은 테이블에서 스키마 수정 잠금을 획득하여 끝에서 매우 짧은 SCH-M 잠금이 필요한 온라인 인덱스 작업을 제외하고 변경 중에 테이블의 메타 데이터를 참조하는 다른 연결이 없는지 확인합니다. ALTER TABLE… SWITCH 작업에서 소스 테이블과 대상 테이블 모두에서 잠금이 획득됩니다. 테이블에 대한 수정 사항이 기록되고 완전히 복구 가능합니다. 열 삭제 또는 기본값으로 NOT NULL 열 추가와 같이 매우 큰 테이블의 모든 행에 영향을주는 변경은 많은 로그 레코드를 완료하고 생성하는 데 시간이 오래 걸릴 수 있습니다. 이러한 ALTER TABLE 문은 INSERT, UPDATE,


또한 좋은 답변입니다. 그러나 나는 하나만 선택할 수있었습니다. 감사!
페르난도
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.