이름 바꾸기 작업 중 데이터 보호
업데이트: 2007년 11월
데이터베이스 개체의 이름을 바꾼 다음 데이터베이스 프로젝트를 빌드하면 이 변경 내용을 반영하는 배포 스크립트가 생성됩니다. 열 또는 테이블 이름을 바꾸는 경우 스크립트에서 원래 이름을 가진 원래 열 또는 테이블을 삭제하고 새 이름을 가진 새 열 또는 테이블을 추가합니다. 이 변경 내용을 기존 데이터베이스에 업데이트로 배포하면 원래 열 또는 테이블의 데이터가 손실됩니다.
프로젝트 속성에서 적절한 옵션을 설정하여 원래 열이나 테이블을 삭제할지 여부를 제어할 수 있습니다. 프로젝트 속성의 빌드 탭에는 데이터베이스 프로젝트에 없지만 대상 데이터베이스에 있는 개체에 대해 DROP 문 생성 확인란이 있습니다. 이 확인란을 선택하면 프로젝트를 빌드할 때 생성되는 배포 스크립트에 이전 개체에 대한 drop 문이 포함됩니다. 이 확인란의 선택을 취소하면 프로젝트를 빌드할 때 생성되는 배포 스크립트에 이전 개체에 대한 drop 문이 포함되지 않습니다.
sp_rename 사용
수동으로 빌드 스크립트를 편집하여 열 및 테이블 삭제/추가를 sp_rename으로 변환할 수 있습니다.
예를 들어 테이블에 대해 다음을 지정할 수 있습니다.
sp_rename '<OLD TABLE NAME>', '<NEW TABLE NAME>', 'OBJECT'
예를 들어 열에 대해 다음을 지정할 수 있습니다.
sp_rename '<TABLE NAME>.<OLD COLUMN NAME>', '<NEW COLUMN NAME>', 'COLUMN'
자세한 내용은 방법: 데이터베이스 리팩터링 변경 내용 배포를 참조하십시오.
이전 개체 및 새 개체 간에 데이터 이동
drop 문에 의해 발생할 수 있는 데이터 손실을 방지하기 위해 drop 문을 배포하지 않도록 선택할 수 있습니다. 이 경우 대상 데이터베이스에 이전 개체 및 새 개체의 복사본이 모두 있습니다. 이전 개체에서 새 개체로 데이터를 이동한 다음 이전 개체를 삭제할 수 있습니다. 다음 방법 중 하나를 사용하여 이 작업을 수행할 수 있습니다.
select 문 또는 다른 T-SQL 문을 사용하여 수동으로 데이터를 이동합니다.
예를 들어 테이블에 대해 다음을 지정할 수 있습니다.
-- Deploy table add only. -- Move the data between the old and new tables. INSERT Region_New SELECT * FROM Region_Old -- Drop the old table manually. DROP TABLE Region_Old
예를 들어 열에 대해 다음을 지정할 수 있습니다.
-- Deploy column add only. -- Move the data between the old and new columns. UPDATE Region SET ColumnNew = ColumnOld -- Drop the old column manually. ALTER TABLE Region DROP COLUMN ColumnOld
bcp 유틸리티, 데이터 변환 서비스(SQL 2000) 또는 SQL Server Integration Services(SQL 2005)를 사용하여 자동으로 데이터를 이동합니다.
임시 저장소를 사용하여 데이터 이동
drop 문에 의해 발생할 수 있는 데이터 손실을 방지하기 위해 데이터를 임시 저장소로 이동할 수 있습니다. 변경 내용을 배포하기 전에 이전 테이블에서 임시 위치로 데이터를 이동합니다. 예를 들어 다른 데이터베이스의 테이블 또는 데이터 파일로 데이터를 이동할 수 있습니다. 그런 다음 drop 및 add 문을 배포합니다. 마지막으로 임시 위치에서 새 테이블로 데이터를 이동합니다. 다음 방법 중 하나를 사용하여 이 작업을 수행할 수 있습니다.
select into 또는 다른 T-SQL 문을 사용하여 수동으로 데이터를 이동합니다.
예를 들어 테이블에 대해 다음을 지정할 수 있습니다.
-- Move the data to temporary storage. SELECT * INTO TemporaryStorage.dbo.Region_Storage FROM Region_Old -- Deploy table drop/add. -- Move the data to the new table. INSERT Region_New SELECT * FROM TemporaryStorage.dbo.Region_Storage
예를 들어 열에 대해 다음을 지정할 수 있습니다.
-- Move the data to temporary storage. SELECT * INTO TemporaryStorage.dbo.Region_Storage FROM Region -- Deploy column drop/add. -- Move the data to the new column. UPDATE Region SET ColumnNew = rs.ColumnOld FROM Region r JOIN TemporaryStorage.dbo.Region_Storage rs ON r.RegionID = rs.RegionID
bcp 유틸리티, 데이터 변환 서비스(SQL 2000) 또는 SQL Server Integration Services(SQL 2005)를 사용하여 자동으로 데이터를 이동합니다.
참고 항목
작업
방법: 기존 데이터베이스에 배포하는 동안 데이터 손실 제어