현재 프로덕션 앱에서 사용중인 MS SQL Server 2008 R2 DB 서버가 있습니다.

앱의 새로운 기능 향상을 위해 테이블의 varchar(100) 열 길이를 늘려야합니다.

이 길이를 늘릴 수 있습니다. 현재 데이터에 영향을주지 않고 prod DB의 기존 열을 늘릴 수 있습니까?

서비스 중단을 방지하기 위해 업무 외 시간에 변경을 완료해야합니까?

답변

varchar(100 - 8000) (즉, varchar(max) 이외의 다른 항목)로 늘리고 SSMS GUI가 아닌 TSQL을 통해이 작업을 수행하는 경우

ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL 

열 null 허용 여부를 NULL에서 NOT NULL로 변경하지 않습니다 ( 모든 행의 유효성을 검사하고 잠재적으로 기록하는 동안 ) 또는 NOT NULL에서 NULL 일부 상황에서 이것은 빠른 메타 데이터 변경 일뿐입니다. 테이블에 대한 SCH-M 잠금을 기다려야 할 수도 있지만 일단 변경되면 즉시 변경됩니다.

알아야 할 한 가지주의 사항은 SCH-M 잠금을 기다리는 동안 다른 쿼리는 대기열을 건너 뛰지 않고 차단 되므로

SET LOCK_TIMEOUT 먼저.

또한 ALTER TABLE 문을 명시 적으로 지정하면 NOT NULL가 원래 열 상태이고 그렇지 않으면 열이 NULL를 허용하도록 변경됩니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다