다음을 통해 공유


데이터베이스 개체의 이름을 바꾸기 전 고려 사항

업데이트: 2007년 11월

Visual Studio Team System Database Edition에서 데이터베이스 개체의 이름을 바꾸기 전에 다음 문제를 고려해야 합니다.

열과 테이블의 이름을 바꿀 때 데이터 손실 방지

뷰의 열 이름 바꾸기

빌드 오류의 영향

데이터 생성 계획에 미치는 영향

단위 테스트에 미치는 영향

T-SQL 스크립트에 미치는 영향

열과 테이블의 이름을 바꿀 때 데이터 손실 방지

데이터베이스 개체의 이름을 바꾸면 프로젝트를 빌드할 때 생성된 배포 스크립트에서 이 변경 내용을 반영합니다. 열이나 테이블의 이름을 바꾸면 스크립트는 원래 이름의 기존 개체를 삭제하고 새 이름의 새로운 열이나 테이블을 추가합니다. 이러한 변경 내용을 기존 데이터베이스에 업데이트로 배포하는 경우 원래 열이나 테이블의 데이터가 손실됩니다.

프로젝트 속성에서 적절한 옵션을 설정하여 원래 열이나 테이블을 삭제할지 여부를 제어할 수 있습니다. 프로젝트 속성을 열고 빌드 탭을 클릭한 다음 데이터베이스 프로젝트에 없지만 대상 데이터베이스에 있는 개체에 대해 DROP 문 생성 확인란을 선택하거나 선택 취소하여 이러한 작업을 수행할 수 있습니다. 이 확인란을 선택하면 프로젝트를 빌드할 때 생성되는 배포 스크립트에 이전 개체에 대한 drop 문이 포함됩니다. 이 확인란의 선택을 취소하면 프로젝트를 빌드할 때 생성되는 배포 스크립트에 이전 개체에 대한 drop 문이 포함되지 않습니다.

drop 문에 의해 발생할 수 있는 데이터 손실을 방지하려면 미리 계획해야 합니다. 다음 예제에서는 데이터를 안전하게 마이그레이션하는 데 사용할 수 있는 방법을 보여 줍니다.

  • drop/add 문을 sp_rename 문으로 바꿉니다.

  • drop 문을 배포하지 마십시오. 기존 개체 복사본 및 새 개체 복사본을 갖게 되므로 두 개체 간에 데이터를 이동할 수 있습니다. select into 또는 다른 T-SQL 문을 사용하여 수동으로 데이터를 이동할 수 있습니다. 대량 복사 프로그램, 데이터 변환 서비스(SQL 2000) 또는 SQL Server Integration Services(SQL 2005)를 사용하여 자동으로 데이터를 이동할 수 있습니다.

  • 변경 내용을 배포하기 전에 기존 테이블의 데이터를 다른 데이터베이스의 테이블과 같은 임시 위치로 이동합니다. drop 및 add 문을 배포합니다. 임시 위치에 있는 데이터를 새 개체로 이동합니다. select into 또는 다른 T-SQL 문을 사용하여 수동으로 데이터를 이동할 수 있습니다. 대량 복사 프로그램, 데이터 변환 서비스(SQL 2000) 또는 SQL Server Integration Services(SQL 2005)를 사용하여 자동으로 데이터를 이동할 수 있습니다.

자세한 내용은 이름 바꾸기 작업 중 데이터 보호를 참조하십시오.

뷰의 열 이름 바꾸기

뷰는 테이블이나 다른 뷰의 열을 선택하는 문으로 구성됩니다. 뷰에서 사용되는 테이블을 기본 테이블이라고 합니다. 예를 들어 다음 코드는 HumanResources.Employee 테이블을 기반으로 하는 뷰를 만듭니다.

CREATE VIEW dbo.vEmployeeTest
AS 
     SELECT EmployeeID, Title
       FROM HumanResources.Employee

뷰에서 열 이름을 바꾸는 경우 기본 테이블의 열 이름은 바뀌지 않습니다. 대신 다음 예제에 표시된 대로 뷰의 이름에 별칭이 지정됩니다.

CREATE VIEW dbo.vEmployeeTest
AS 
     SELECT EmployeeID, Title AS JobTitle
       FROM HumanResources.Employee

CREATE VIEW dbo.vEmployeeTest (EmployeeID, JobTitle)
AS 
     SELECT EmployeeID, Title
       FROM HumanResources.Employee
참고:

뷰에서 SELECT *를 사용하여 기본 테이블에서 데이터를 가져오는 경우 *가 확장되어 개별 열을 나열합니다. 이름이 바뀐 열에는 이전 예제처럼 별칭이 지정됩니다.

뷰와 기본 테이블 양쪽에서 열 이름을 바꾸려는 경우 대신 테이블의 열 이름을 바꾸면 뷰의 열이 자동으로 업데이트됩니다.

빌드 오류의 영향

Database Edition에서 데이터베이스 개체의 이름을 바꾸면 다른 데이터베이스 개체, 데이터 생성 계획, 단위 테스트, 해당 개체를 참조하는 스크립트를 업데이트하려고 합니다. 데이터베이스 프로젝트에서 작업하는 동안 빌드 오류를 발생시키는 작업을 수행한 다음 해당 빌드 오류를 수정하는 다른 작업을 수행할 수 있습니다. 예를 들어 테이블을 삭제한 다음 해당 테이블을 기반으로 하는 뷰를 업데이트하여 삭제된 테이블에 대한 참조를 제거할 수 있습니다. 테이블을 삭제하고 뷰를 업데이트하는 사이에 프로젝트에 빌드 오류가 발생합니다.

프로젝트에 빌드 오류가 있는 상태에서 데이터베이스 개체의 이름을 바꾸는 경우에도 개체의 이름을 올바르게 바꿀 수 있습니다. 그러나 이름을 바꾸는 개체에 대한 모든 참조를 정확하게 업데이트할 수는 없습니다. 프로젝트에 빌드 오류가 있는 경우 변경 내용 미리 보기 대화 상자에 경고가 나타납니다. 계속 진행하는 경우 가능한 만큼 개체 이름이 바뀌고 참조가 업데이트됩니다. 작업을 취소하는 경우 먼저 빌드 오류를 수정한 다음 이름 바꾸기 작업을 다시 시도할 수 있습니다.

변경 내용 미리 보기 대화 상자에 다음에 대한 경고가 표시됩니다.

  • 데이터베이스 프로젝트의 빌드 오류

  • 스크립트와 단위 테스트의 구문 오류

  • 잘못된 데이터 생성 계획

데이터 생성 계획에 미치는 영향

Team Edition for Database Professionals에서 데이터베이스 개체의 이름을 바꾸면 해당 개체를 참조하는 데이터 생성 계획도 업데이트를 시도합니다. 그러나 다음 사항을 고려해야 합니다.

  • 개체 이름을 바꾸려면 먼저 편집기에 열려 있는 모든 데이터 생성 계획을 저장해야 합니다. 개체 이름을 바꾸려고 할 때 데이터 생성 계획이 열려 있는 경우 우선 계획을 저장하라는 메시지가 나타납니다. 계속하면 열려 있는 모든 데이터 생성 계획이 자동으로 저장된 후 닫히고 이름 바꾸기 작업이 계속됩니다. 계속 진행하지 않는 경우 이름 바꾸기 작업은 취소됩니다. 열려 있는 모든 데이터 생성 계획은 열린 채로 있고 저장되지 않습니다.

  • 데이터 바운드 데이터 생성기를 사용하는 데이터 생성 계획을 수동으로 업데이트해야 합니다.

자세한 내용은 데이터 생성기를 사용하여 데이터 생성을 참조하십시오.

단위 테스트에 미치는 영향

단위 테스트의 T-SQL(Transact-SQL) 문은 일반적으로 단위 테스트의 ValidationConnectionString과 ExecutionConnectionString에 지정된 데이터베이스의 개체를 참조합니다. 다음은 예외가 될 수 있는 두 가지 가능성입니다.

  • 단위 테스트의 T-SQL 문은 다른 데이터베이스의 개체를 참조할 수 있습니다.

  • 단위 테스트의 T-SQL 문은 동일한 데이터베이스이지만 다른 스키마(SQL Server 2005)에 있는 개체를 참조할 수 있습니다.

Database Edition에서 데이터베이스 개체의 이름을 바꾸면 해당 개체를 참조하는 솔루션의 단위 테스트를 업데이트하려고 합니다. 앞에서 언급한 경우에는 단위 테스트를 업데이트할 수 없습니다. 데이터베이스 개체의 이름을 바꿀 때 단위 테스트를 업데이트하려면 단위 테스트에서 정규화된 개체 이름을 사용해야 합니다. 단위 테스트에서 정규화된 이름을 사용하는 경우 스키마 개체의 이름을 바꿀 때마다 리팩터링 엔진이 단위 테스트를 업데이트할 수 있습니다.

단위 테스트에 대한 자세한 내용은 데이터베이스 단위 테스트 개요를 참조하십시오.

T-SQL 스크립트에 미치는 영향

데이터베이스 프로젝트의 T-SQL 스크립트는 일반적으로 데이터베이스 프로젝트의 데이터베이스에 있는 스키마 개체를 참조합니다. 다음은 예외가 될 수 있는 두 가지 가능성입니다.

  • 스크립트의 T-SQL 문은 다른 데이터베이스의 개체를 참조할 수 있습니다.

  • 스크립트의 T-SQL 문은 동일한 데이터베이스이지만 다른 스키마(SQL Server 2005)에 있는 개체를 참조할 수 있습니다.

Database Edition에서 데이터베이스 개체의 이름을 바꾸면 해당 개체를 참조하는 솔루션의 스크립트를 업데이트하려고 합니다. 앞에서 언급한 경우에는 스크립트를 업데이트할 수 없습니다. 데이터베이스 개체 이름을 바꿀 때 스크립트를 업데이트하려면 스크립트에서 정규화된 개체 이름을 사용해야 합니다. 스크립트에서 정규화된 이름을 사용하는 경우 스키마 개체의 이름을 바꿀 때마다 리팩터링 엔진이 스크립트를 업데이트할 수 있습니다.

스크립트에 대한 자세한 내용은 데이터베이스 스크립트 작업을 참조하십시오.

보안

오류로 인해 리팩터링 작업이 완료되지 않으면 오류에 대한 정보가 응용 프로그램 이벤트 로그에 기록됩니다. 이 로그는 "일반 사용자" 권한이 있는 사용자가 볼 수 있습니다. 중요한 스키마 정보가 로그에 나타날 수 있는 경우 로그를 지우거나 클라이언트 컴퓨터에 대한 액세스를 제한할 수 있습니다.

참고 항목

개념

Database Edition의 용어 개요

기타 리소스

데이터베이스 개체 이름 바꾸기

이름 바꾸기 리팩터링 개요