다음을 통해 공유


연습: 데이터베이스 리팩터링 변경 내용 배포

업데이트: 2007년 11월

Visual Studio Team System Database Edition에서 작업할 때 데이터베이스의 오프라인 표현을 변경합니다. 해당 변경 내용을 라이브 데이터베이스에 커밋하려면 데이터베이스 프로젝트를 빌드하고 배포해야 합니다. 변경 내용을 개발 데이터베이스, 테스트 데이터베이스 또는 프로덕션 데이터베이스에 배포하더라도 프로세스는 유사합니다.

참고:

배포 프로세스는 모든 종류의 데이터베이스에서 유사합니다. 그러나 배포를 수행하는 사람은 다를 수 있습니다. 예를 들어 일부 환경에서는 DBA(데이터베이스 관리자)만 프로덕션 데이터베이스에 배포할 수 있습니다.

이전 연습인 연습: 데이터베이스 열 이름 바꾸기에서 데이터베이스 프로젝트를 만들었고 Northwind 데이터베이스 스키마를 가져왔으며 열 이름을 바꿨습니다. 이 연습에서는 해당 변경 내용을 빌드하고 배포합니다.

사전 요구 사항

이 연습을 완료하려면 다음이 필요합니다.

데이터베이스 프로젝트를 빌드하려면

  1. 연습: 데이터베이스 열 이름 바꾸기에서 만든 RefactorNorthwind라는 데이터베이스 프로젝트를 엽니다.

  2. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

  3. 빌드 오류가 오류 목록 창에 나타납니다. 예를 들어 저장 프로시저가 열을 정규화하지 않고 선택하고 사용자가 해당 열 이름을 바꾸는 경우 해당 이름은 저장 프로시저에서 업데이트되지 않습니다. 이런 경우 저장 프로시저가 존재하지 않는 열 이름을 선택하기 때문에 빌드 오류가 발생합니다. 이러한 유형의 오류를 방지하려면 열 이름이 T-SQL(Transact-SQL) 코드에서 정규화되어야 합니다. 이러한 유형의 오류를 수정하려면 열 이름을 수동으로 업데이트해야 합니다. 예를 들어 열 이름을 Orders.ShippedDate에서 Orders.ShippedDateAndTime으로 바꾸는 경우 저장 프로시저 Sales by Year를 수동으로 업데이트해야 합니다. 이 저장 프로시저를

    create procedure "Sales by Year" 
        @Beginning_Date DateTime, @Ending_Date DateTime AS
    SELECT Orders.ShippedDateAndTime, Orders.OrderID, "Order Subtotals".Subtotal, DATENAME(yy, ShippedDate) AS Year
    FROM Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID
    WHERE Orders.ShippedDateAndTime Between @Beginning_Date And @Ending_Date
    

    다음과 같이 변경합니다.

    create procedure "Sales by Year" 
        @Beginning_Date DateTime, @Ending_Date DateTime AS
    SELECT Orders.ShippedDateAndTime, Orders.OrderID, "Order Subtotals".Subtotal, DATENAME(yy, Orders.ShippedDateAndTime) AS Year
    FROM Orders INNER JOIN "Order Subtotals" ON Orders.OrderID = "Order Subtotals".OrderID
    WHERE Orders.ShippedDateAndTime Between @Beginning_Date And @Ending_Date
    

프로젝트에 대한 배포 속성을 설정하려면

  1. 솔루션 탐색기에서 데이터베이스 프로젝트인 RefactorNorthwind를 클릭합니다.

  2. 프로젝트 메뉴에서 RefactorNorthwind 속성을 클릭합니다.

    프로젝트 속성이 나타납니다.

  3. 빌드 탭을 클릭합니다.

  4. ...라고 표시된 단추를 클릭하여 연결 속성 대화 상자를 표시합니다.

  5. 작업할 데이터베이스에 대한 연결 속성을 설정한 다음 확인을 클릭합니다.

    대상 연결 상자가 올바른 연결 문자열로 채워집니다.

    주의:

    테스트 데이터베이스 또는 개발 데이터베이스에 대해 이 배포를 테스트해야 합니다. 프로덕션 데이터베이스에 대해 이 배포를 테스트하면 안 됩니다.

  6. 대상 데이터베이스 이름 상자에 대상 데이터베이스 이름을 입력합니다.

    주의:

    기본적으로 대상 데이터베이스 이름 상자는 데이터베이스 프로젝트의 이름으로 채워집니다. 데이터베이스 프로젝트 이름이 대상 데이터베이스 이름이 아닌 경우 이 필드를 변경해야 합니다.

  7. 데이터베이스 프로젝트에 없지만 대상 데이터베이스에 있는 개체에 대해 DROP 문 생성 확인란을 선택합니다. 이 확인란은 테이블 이름을 바꾸는 경우 등에 중요합니다. 생성된 배포 스크립트에는 기존 이름의 테이블에 대한 DROP 문과 새 이름의 테이블에 대한 CREATE TABLE 문이 있습니다. 데이터베이스 프로젝트에 없지만 대상 데이터베이스에 있는 개체에 대해 DROP 문 생성 확인란의 선택을 취소하여 기존 이름의 테이블이 삭제되지 않게 할 수 있습니다. 이 방법은 이러한 상황에서 발생할 수 있는 데이터 손실을 방지하는 여러 가지 방법 중 하나입니다. 자세한 내용은 이름 바꾸기 작업 중 데이터 보호를 참조하십시오.

  8. 파일 메뉴에서 모두 저장을 클릭합니다.

  9. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.

    배포 스크립트는 방금 설정한 프로젝트 속성을 기반으로 빌드됩니다. 출력 창에 빌드 상태가 표시되고 빌드: 성공 또는 최신 상태 1이 마지막 줄에 표시되어야 합니다.

데이터베이스 프로젝트를 배포하려면

  1. 파일 메뉴에서 열기를 가리킨 다음 파일을 클릭합니다.

    파일 열기 대화 상자가 나타납니다.

  2. 파일 이름 상자에 다음 주소를 입력한 다음 열기를 클릭합니다.

    해당 경로\RefactorNorthwind\Sql\RefactoringDeploy.해당 서버.Northwind.sql

  3. 배포 스크립트에서 다음과 같은 줄을 찾습니다.

    DROP TABLE [dbo].[Orders]

    CREATE TABLE [dbo].[Orders]

    이러한 줄은 이전 연습에서 수행한 리팩터링 변경 내용과 일치합니다. 이 시점에서 배포 스크립트를 변경할 수 있습니다. 예를 들어 배포하지 않을 DROP 문을 삭제할 수 있습니다. 자세한 내용은 이름 바꾸기 작업 중 데이터 보호를 참조하십시오. 이 연습을 수행하기 위해 배포 스크립트를 있는 그대로 남겨둘 수 있습니다.

    주의:

    배포 스크립트를 변경하는 경우 T-SQL 편집기에서 배포 스크립트를 실행하여 수동으로 배포해야 합니다. 배포 명령을 사용하여 배포 스크립트를 배포할 수는 없습니다.

  4. 배포 스크립트를 닫습니다.

  5. 보기 메뉴에서 서버 탐색기를 클릭합니다.

    서버 탐색기 창이 나타나고 대상 데이터베이스가 데이터 연결에 나타납니다. 대상 데이터베이스가 나타나지 않는 경우 도구 메뉴를 열고 데이터베이스에 연결을 클릭하여 대상 데이터베이스에 대한 연결을 추가합니다.

  6. 서버 탐색기에서 대상 데이터베이스, 테이블 노드, Orders 테이블을 차례로 확장합니다.

    ShippedDate 열이 원래 이름으로 나타납니다.

  7. 솔루션 탐색기에서 데이터베이스 프로젝트인 RefactorNorthwind를 클릭합니다.

  8. 빌드 메뉴에서 배포를 클릭합니다. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 배포를 클릭할 수도 있습니다.

    주의:

    테스트 데이터베이스 또는 개발 데이터베이스에 대해 이 배포를 실행해야 합니다. 프로덕션 데이터베이스에 대해서는 이 배포를 실행하지 않아야 합니다.

    데이터베이스 프로젝트는 배포 스크립트를 사용하여 대상 데이터베이스에 배포됩니다. 출력 창에 배포 상태가 표시되고 배포되었습니다.가 마지막 줄에 표시되어야 합니다.

  9. 서버 탐색기에서 테이블 노드를 마우스 오른쪽 단추로 클릭한 다음 새로 고침을 클릭합니다.

    ShippedDate 열이 새 이름인 ShippedDateAndTime으로 나타납니다.

참고 항목

개념

데이터베이스 프로젝트 설정 개요

기타 리소스

데이터베이스 리팩터링

데이터베이스 스키마 빌드 및 배포