현재 프로덕션 앱에서 사용중인 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
를 허용하도록 변경됩니다.