답변:
1) 무슨 일이 일어나고 있는지 정확하게 파악하려면 테이블의 전체 구조 + 비 클러스터형 인덱스에 대한 자세한 정보가 필요하지만 내 의심은 NULL 비트 맵과 관련이 있습니다.
주제에 대한 자세한 내용은를 참조하십시오. http://www.sqlskills.com/BLOGS/PAUL/post/Misconceptions-around-null-bitmap-size.aspx
2) 예, 스토리지 공간이 있으면 정확한 널 입력이 가능한 새 테이블을 작성하고 과도한 로그 증가를 피하기 위해 여러 배치로 데이터를 전송하고 아래 나열된 기술을 사용하여 테이블을 전환하십시오. 다운 타임이 거의 없거나 전혀없는 상태에서이 작업을 여러 번 수행했습니다.
http://jahaines.blogspot.com/2009/12/sql-server-2005-how-to-move-10-millions.html
더 빠를까요?
Column1
INSERT INTO <NewTable> SELECT * FROM <OriginalTable>
;여기서 장점은 작업 기간 동안 원본 테이블에 대한 잠금을 유지하지 않는다는 것입니다. 이름 바꾸기 단계에서만 테이블을 잠 가야합니다. SQL Server는 개체 수준 이름 바꾸기를 지원한다고 가정합니다.
또 다른 옵션은 문제의 테이블에 대한 올바른 정의로 새 열을 작성하고 이전 열의 데이터로 열을 업데이트 한 다음 이전 열을 삭제하는 것입니다.
또는 INT 열에서 비슷한 문제를 다루는 SE의 이전 게시물을 참조 할 수 있습니다.
/programming/4311559/sql-server-performance-for-alter-table-alter-column-change-data-type
sp_rename
.