연습: 새 버전 제어 데이터베이스 만들기 및 배포
업데이트: 2010년 7월
이 연습에서는 테이블 두 개와 저장 프로시저 하나가 포함된 단순한 데이터베이스를 만듭니다. 이 프로세스를 수행하려면 데이터베이스 프로젝트를 만들고 해당 프로젝트에 데이터베이스 개체를 만든 다음 변경 내용을 빌드하여 데이터베이스 서버로 배포해야 합니다. 데이터베이스 프로젝트를 만들면 데이터베이스 프로젝트가 버전 제어에 추가되므로 데이터베이스 스키마를 버전 제어에 추가할 수 있습니다.
이 항목에서는 프로덕션 또는 사전 프로덕션 환경에 배포하는 방법은 보여 주지 않습니다. 이러한 유형의 환경에 배포하려면 일반적으로 VSDBCMD.EXE 유틸리티를 사용하거나, 배포 스크립트를 사용하여 수동으로 배포합니다. 자세한 내용은 다음 항목을 참조하십시오.
이 연습의 주요 단계는 다음과 같습니다.
데이터베이스 프로젝트를 만듭니다.
데이터베이스 테이블을 만듭니다.
해당 테이블에 대한 인덱스, 키 및 제약 조건을 만듭니다.
두 개의 저장 프로시저를 만듭니다.
데이터베이스 프로젝트 속성을 구성합니다.
데이터베이스 프로젝트를 빌드합니다.
데이터베이스 프로젝트를 배포합니다.
데이터베이스 프로젝트를 버전 제어에 추가합니다.
사전 요구 사항
이 연습을 수행하려면 SQL Server 2008을 실행하는 데이터베이스 서버에서 데이터베이스를 만들 수 있는 권한이 있는 계정으로 로그온해야 합니다.
데이터베이스 프로젝트를 만들려면
파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.
새 프로젝트 대화 상자가 나타납니다.
설치된 템플릿에서 데이터베이스 노드를 확장하고 SQL Server를 클릭합니다.
참고
Visual Studio Professional을 사용하는 경우에는 설치된 템플릿에서 데이터베이스 노드, SQL Server 노드를 차례로 확장한 다음 고급을 클릭합니다.
템플릿 목록에서 SQL Server 2008 데이터베이스 프로젝트를 클릭합니다.
이름에 OrdersDB를 입력합니다.
솔루션용 디렉터리 만들기 확인란을 선택합니다.
위치, 솔루션 이름 및 소스 제어에 추가에 대해 기본값을 적용한 다음 확인을 클릭합니다.
참고
이때 솔루션을 버전 제어에 추가할 수 있습니다. 이 연습에서는 최종 단계에서 솔루션을 버전 제어에 추가합니다.
새 데이터베이스 프로젝트 OrdersDB가 솔루션 탐색기에 나타납니다.
보기 메뉴에서 데이터베이스 스키마 뷰를 클릭합니다.
스키마 뷰가 아직 표시되지 않은 경우 표시됩니다.
다음에는 데이터베이스 프로젝트에 스키마를 추가합니다.
데이터베이스 프로젝트에 Sales 스키마를 추가하려면
스키마 뷰에서 OrdersDB 노드를 확장하고 스키마 노드를 클릭합니다.
프로젝트 메뉴에서 새 항목 추가를 클릭합니다.
새 항목 추가 대화 상자가 나타납니다.
참고
스키마 뷰에서 OrdersDB 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 스키마를 클릭할 수도 있습니다.
템플릿에서 스키마를 클릭합니다.
참고
범주 목록에서 테이블 및 뷰를 클릭하면 테이블의 템플릿을 보다 쉽게 찾을 수 있습니다.
이름에서 새 스키마에 지정할 이름으로 Sales를 입력합니다.
추가를 클릭하여 데이터베이스 프로젝트에 스키마를 추가합니다.
솔루션 탐색기에서 해당 데이터베이스 프로젝트에 이 스키마에 대한 새 파일이 표시됩니다. 스키마 뷰에는 새 스키마 개체가 표시됩니다. Transact-SQL 편집기가 나타나고 새 스키마에 대한 정의가 표시됩니다.
다음에는 데이터베이스 프로젝트에 테이블을 추가합니다.
데이터베이스 프로젝트에 Customer 테이블을 추가하려면
스키마 뷰에서 Sales 노드를 확장하고 테이블 노드를 마우스 오른쪽 단추로 클릭한 다음 추가를 가리키고 테이블을 클릭합니다.
이름에서 새 테이블에 지정할 이름으로 Customer를 입력합니다.
추가를 클릭하여 데이터베이스 프로젝트에 테이블을 추가합니다.
솔루션 탐색기의 사용자 데이터베이스 프로젝트에 해당 테이블에 대한 새 파일이 표시됩니다. 스키마 뷰에는 새 테이블 개체가 표시됩니다. Transact-SQL 편집기가 나타나고 새 테이블에 대한 정의가 표시됩니다.
Transact-SQL 편집기에서 다음 예제와 일치하도록 테이블 정의를 수정합니다.
CREATE TABLE [Sales].[Customer] ( [CustomerID] INT IDENTITY (1, 1) NOT NULL, [CustomerName] NVARCHAR (40) NOT NULL, [YTDOrders] INT NOT NULL, [YTDSales] INT NOT NULL );
파일 메뉴에서 Sales.Customer.table.sql 저장을 클릭합니다.
스키마 뷰에서 Sales.Customer 노드를 확장합니다.
Sales.Customer 테이블의 열 노드를 확장합니다.
Transact-SQL 편집기에서 정의한 네 개의 열이 나타납니다.
다음에는 Customer 테이블에 인덱스를 추가합니다.
Customer 테이블에 인덱스를 추가하려면
스키마 뷰에서 Sales.Customer를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 인덱스를 클릭합니다.
새 항목 추가 대화 상자가 나타납니다.
템플릿에서 인덱스를 클릭합니다.
이름에서 새 인덱스에 지정할 이름으로 IX_CustomerCustomerName을 입력합니다.
추가를 클릭하여 Categories 테이블에 인덱스를 추가합니다.
솔루션 탐색기의 사용자 데이터베이스 프로젝트에 해당 인덱스에 대한 새 파일이 표시됩니다. 스키마 뷰에는 새 인덱스 개체가 표시됩니다. Transact-SQL 편집기가 나타나고 새 인덱스에 대한 정의가 표시됩니다.
참고
스키마 뷰에서 인덱스의 아이콘에 흰색 "x"가 포함된 빨간색 원이 표시되어 기본 정의에 오류가 있음을 나타냅니다. 이는 기본 정의에서 존재하지 않는 "column_1" 열을 참조하기 때문이며 예상된 동작입니다.
Transact-SQL 편집기에서 다음 예제와 일치하도록 인덱스 정의를 수정합니다.
CREATE INDEX [IX_CustomerCustomerName] ON [Sales].[Customer] (CustomerName)
파일 메뉴에서 Sales.Customer.IX_CustomerCustomerName.index.sql 저장을 클릭합니다.
아이콘에서 오류 표시기가 사라져 이제 인덱스 정의가 유효함을 나타냅니다.
다음에는 Customer 테이블에 기본 키를 추가합니다.
Customer 테이블에 기본 키를 추가하려면
스키마 뷰에서 Sales.Customer를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 기본 키를 클릭합니다.
새 항목 추가 대화 상자가 나타납니다.
템플릿에서 기본 키를 클릭합니다.
이름에서 새 기본 키에 지정할 이름으로 PK_CustomerCustomerID를 입력합니다.
추가를 클릭하여 Customer 테이블에 기본 키를 추가합니다.
솔루션 탐색기의 사용자 데이터베이스 프로젝트에 해당 기본 키에 대한 새 파일이 표시됩니다. 스키마 뷰에는 새 기본 키 개체가 표시됩니다. Transact-SQL 편집기가 나타나고 새 키에 대한 정의가 표시됩니다.
참고
기본 키의 아이콘에 흰색 "x"가 포함된 빨간색 원이 표시되어 기본 정의에 오류가 있음을 나타냅니다. 이는 기본 정의에서 존재하지 않는 "column_1" 열을 참조하기 때문이며 예상된 동작입니다.
Transact-SQL 편집기에서 다음 예제와 일치하도록 기본 키 정의를 수정합니다.
ALTER TABLE [Sales].[Customer] ADD CONSTRAINT [PK_CustomerCustomerID] PRIMARY KEY (CustomerID)
파일 메뉴에서 Sales.Customer.PK_CustomerCustomerID.pkey.sql 저장을 클릭합니다.
아이콘에서 오류 표시기가 사라져 이제 기본 키 정의가 유효함을 나타냅니다.
다음에는 Orders 테이블을 추가합니다.
Orders 테이블을 추가하려면
스키마 뷰에서 OrdersDB를 클릭합니다.
프로젝트 메뉴에서 새 항목 추가를 클릭합니다.
새 항목 추가 대화 상자가 나타납니다.
참고
스키마 뷰에서 OrdersDB 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 테이블을 클릭할 수도 있습니다.
템플릿에서 테이블을 클릭합니다.
이름에서 새 테이블에 지정할 이름으로 Orders를 입력합니다.
추가를 클릭하여 데이터베이스 프로젝트에 테이블을 추가합니다.
솔루션 탐색기의 사용자 데이터베이스 프로젝트에 해당 테이블에 대한 새 파일이 표시됩니다. 스키마 뷰에는 새 테이블 개체가 표시됩니다. Transact-SQL 편집기가 나타나고 새 테이블에 대한 정의가 표시됩니다.
Transact-SQL 편집기에서 다음 예제와 일치하도록 테이블 정의를 수정합니다.
CREATE TABLE [Sales].[Orders] ( [CustomerID] INT NOT NULL, [OrderID] INT IDENTITY (1, 1) NOT NULL, [OrderDate] DATETIME NOT NULL, [FilledDate] DATETIME NULL, [Status] CHAR (1) NOT NULL, [Amount] INT NOT NULL );
파일 메뉴에서 Sales.Orders.table.sql 저장을 클릭합니다.
스키마 뷰에서 Sales.Orders 노드를 확장합니다.
Sales.Orders 테이블의 열 노드를 확장합니다.
Transact-SQL 편집기에서 정의한 열이 나타납니다.
다음에는 Products 테이블에 인덱스를 추가합니다.
Orders 테이블에 기본 키를 추가하려면
스키마 뷰에서 Sales.Orders를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 기본 키를 클릭합니다.
새 항목 추가 대화 상자가 나타납니다.
템플릿에서 기본 키를 클릭합니다.
이름에서 새 기본 키에 지정할 이름으로 PK_OrdersOrderID를 입력합니다.
추가를 클릭하여 Orders 테이블에 기본 키를 추가합니다.
솔루션 탐색기의 사용자 데이터베이스 프로젝트에 새 기본 키에 대한 파일이 표시됩니다. 스키마 뷰에는 새 기본 키 개체가 표시됩니다. Transact-SQL 편집기가 나타나고 새 기본 키에 대한 정의가 표시됩니다.
참고
기본 키의 아이콘에 흰색 "x"가 포함된 빨간색 원이 표시되어 기본 정의에 오류가 있음을 나타냅니다. 이는 기본 정의에서 존재하지 않는 "column_1" 열을 참조하기 때문이며 예상된 동작입니다.
Transact-SQL 편집기에서 다음 예제와 일치하도록 기본 키 정의를 수정합니다.
ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [PK_Orders_OrderID] PRIMARY KEY CLUSTERED ([OrderID] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF);
파일 메뉴에서 Sales.Orders.PK_Orders_OrderID.pkey.sql 저장을 클릭합니다.
아이콘에서 오류 표시기가 사라져 이제 기본 키 정의가 유효함을 나타냅니다.
다음에는 Orders 테이블에 외래 키를 추가합니다.
Orders 테이블 및 Customer 테이블 간의 외래 키를 추가하려면
스키마 뷰에서 Sales.Orders를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 외래 키를 클릭합니다.
새 항목 추가 대화 상자가 나타납니다.
템플릿에서 외래 키를 클릭합니다.
이름에서 새 외래 키에 지정할 이름으로 FK_OrdersCustomer를 입력합니다.
추가를 클릭하여 Orders 테이블에 외래 키를 추가합니다.
솔루션 탐색기의 사용자 데이터베이스 프로젝트에 새 외래 키에 대한 파일이 표시됩니다. 스키마 뷰에는 새 외래 키 개체가 표시됩니다. Transact-SQL 편집기가 나타나고 새 외래 키에 대한 정의가 표시됩니다.
참고
외래 키의 아이콘에 흰색 "x"가 포함된 빨간색 원이 표시되어 기본 정의에 오류가 있음을 나타냅니다. 이는 기본 정의에서 존재하지 않는 "column_1" 열을 참조하기 때문이며 예상된 동작입니다.
Transact-SQL 편집기에서 다음 예제와 일치하도록 외래 키 정의를 수정합니다.
ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [FK_Orders_Customer_CustID] FOREIGN KEY ([CustomerID]) REFERENCES [Sales].[Customer] ([CustomerID]) ON DELETE NO ACTION ON UPDATE NO ACTION;
파일 메뉴에서 Sales.Orders.FK_OrdersCustomer.fkey.sql 저장을 클릭합니다.
아이콘에서 오류 표시기가 사라져 이제 외래 키 정의가 유효함을 나타냅니다.
다음에는 Products 테이블에 CHECK 제약 조건을 추가합니다.
Orders 테이블에 CHECK 제약 조건을 추가하려면
스키마 뷰에서 Sales.Orders를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 CHECK 제약 조건을 클릭합니다.
새 항목 추가 대화 상자가 나타납니다.
템플릿에서 CHECK 제약 조건을 클릭합니다.
이름에서 새 CHECK 제약 조건에 지정할 이름으로 CK_OrderStatus를 입력합니다.
추가를 클릭하여 Products 테이블에 제약 조건을 추가합니다.
솔루션 탐색기의 사용자 데이터베이스 프로젝트에 새 제약 조건에 대한 파일이 표시됩니다. 스키마 뷰에는 새 제약 조건 개체가 표시됩니다. Transact-SQL 편집기가 나타나고 새 제약 조건에 대한 정의가 표시됩니다.
참고
제약 조건의 아이콘에 흰색 "x"가 포함된 빨간색 원이 표시되어 기본 정의에 오류가 있음을 나타냅니다. 이는 기본 정의에서 존재하지 않는 "column_1" 열을 참조하기 때문이며 예상된 동작입니다.
Transact-SQL 편집기에서 다음 예제와 일치하도록 제약 조건 정의를 수정합니다.
ALTER TABLE [Sales].[Orders] ADD CONSTRAINT [CK_OrderStatus] CHECK ([Status] IN ('O','X','F','B'))
파일 메뉴에서 Sales.Orders.CK_OrderStatus.chkconst.sql 저장을 클릭합니다.
아이콘에서 오류 표시기가 사라져 이제 제약 조건 정의가 유효함을 나타냅니다.
다음에는 프로젝트에 두 개의 저장 프로시저를 추가합니다.
고객을 추가하는 저장 프로시저를 만들려면
스키마 뷰의 스키마에서 Sales를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 저장 프로시저를 클릭합니다.
이름에서 새 저장 프로시저에 지정할 이름으로 uspNewCustomer를 입력합니다.
추가를 클릭하여 데이터베이스 프로젝트에 저장 프로시저를 추가합니다.
솔루션 탐색기의 사용자 데이터베이스 프로젝트에 새 저장 프로시저에 대한 파일이 표시됩니다. 스키마 뷰에는 새 저장 프로시저 개체가 표시됩니다. Transact-SQL 편집기가 나타나고 새 저장 프로시저에 대한 정의가 표시됩니다.
Transact-SQL 편집기에서 다음 예제와 일치하도록 저장 프로시저 정의를 수정합니다.
CREATE PROCEDURE [Sales].[uspNewCustomer] @CustomerName NVARCHAR (40) AS BEGIN INSERT INTO [Sales].[Customer] (CustomerName) VALUES (@CustomerName); SELECT SCOPE_IDENTITY() END
파일 메뉴에서 Sales.uspNewCustomer.proc.sql 저장을 클릭합니다.
스키마 뷰에서 프로그래밍 기능 노드와 저장 프로시저 노드를 차례로 확장합니다.
Transact-SQL 편집기에서 정의한 프로시저가 나타납니다.
다음에는 고객의 주문을 넣는 두 번째 저장 프로시저를 추가합니다.
고객의 주문을 넣는 저장 프로시저를 만들려면
스키마 뷰에서 OrdersDB를 클릭합니다.
프로젝트 메뉴에서 새 항목 추가를 클릭합니다.
새 항목 추가 대화 상자가 나타납니다.
참고
스키마 뷰에서 OrdersDB 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 저장 프로시저를 클릭할 수도 있습니다.
범주에서 데이터베이스 프로젝트를 확장하고 프로그래밍 기능을 클릭합니다.
템플릿에서 저장 프로시저를 클릭합니다.
이름에서 새 저장 프로시저에 지정할 이름으로 uspPlaceNewOrder를 입력합니다.
추가를 클릭하여 데이터베이스 프로젝트에 저장 프로시저를 추가합니다.
솔루션 탐색기의 사용자 데이터베이스 프로젝트에 새 저장 프로시저에 대한 파일이 표시됩니다. 스키마 뷰에는 새 저장 프로시저 개체가 표시됩니다. Transact-SQL 편집기가 나타나고 새 저장 프로시저에 대한 정의가 표시됩니다.
Transact-SQL 편집기에서 다음 예제와 일치하도록 저장 프로시저 정의를 수정합니다.
CREATE PROCEDURE [Sales].[uspPlaceNewOrder] @CustomerID INT, @Amount INT, @OrderDate DATETIME, @Status CHAR (1)='O' AS BEGIN DECLARE @RC INT BEGIN TRANSACTION INSERT INTO [Sales].[Orders] (CustomerID, OrderDate, FilledDate, Status, Amount) VALUES (@CustomerID, @OrderDate, NULL, @Status, @Amount) SELECT @RC = SCOPE_IDENTITY(); UPDATE [Sales].[Customer] SET YTDOrders = YTDOrders + @Amount WHERE [CustomerID] = @CustomerID COMMIT TRANSACTION RETURN @RC END
파일 메뉴에서 Sales.uspPlaceNewOrder.proc.sql 저장을 클릭합니다.
스키마 뷰에서 프로그래밍 기능 노드와 저장 프로시저 노드를 차례로 확장합니다.
Transact-SQL 편집기에서 정의한 프로시저가 나타납니다.
다음에는 프로젝트를 빌드 및 배포하기 전에 프로젝트 설정을 구성합니다.
프로젝트를 배포하기 위한 설정을 구성하려면
솔루션 탐색기에서 OrdersDB(솔루션이 아닌 프로젝트)를 클릭합니다.
프로젝트 메뉴에서 OrdersDB 속성을 클릭합니다.
프로젝트 속성 창이 나타납니다.
참고
솔루션 탐색기에서 OrdersDB를 마우스 오른쪽 단추로 클릭하고 속성을 클릭해도 됩니다.
배포 탭을 클릭합니다.
배포 작업 목록에서 배포 스크립트(.sql)를 만들고 데이터베이스에 배포를 클릭합니다.
편집을 클릭하여 대상 연결을 지정합니다.
OrdersDB 데이터베이스를 배포할 데이터베이스 서버에 연결하기 위한 정보를 지정합니다.
데이터베이스 이름 선택 또는 입력에서 OrdersDB를 입력하고 확인을 클릭합니다.
대상 연결이 연결 문자열로 채워집니다. 또한 대상 데이터베이스 이름이 OrdersDB로 설정됩니다.
다른 옵션에 대해 기본값을 적용합니다.
파일 메뉴에서 선택한 항목 저장을 클릭합니다.
프로젝트 빌드 설정이 저장됩니다.
다음에는 데이터베이스 프로젝트를 빌드합니다.
데이터베이스 프로젝트를 빌드하려면
빌드 메뉴에서 솔루션 빌드를 클릭합니다.
데이터베이스 프로젝트가 빌드됩니다. 성공하면 상태 표시줄에 **빌드했습니다.**가 나타나고 출력 창에 빌드 결과가 표시됩니다.
마지막으로 데이터베이스 프로젝트를 배포합니다.
데이터베이스 프로젝트를 데이터베이스 서버로 배포하려면
솔루션 탐색기에서 OrdersDB(솔루션이 아닌 프로젝트)를 클릭합니다.
빌드 메뉴에서 OrdersDB 배포를 클릭합니다.
데이터베이스 프로젝트가 빌드 구성에서 지정한 연결을 사용하여 배포됩니다. 출력 창과 상태 표시줄에 "배포되었습니다."라는 메시지가 나타납니다.
데이터베이스 프로젝트를 버전 제어에 체크 인하려면
솔루션 탐색기에서 OrdersDB(솔루션)를 클릭합니다.
파일 메뉴에서 소스 제어를 가리킨 다음 소스 제어에 솔루션 추가를 클릭합니다.
이 부분에서 사용자는 설치된 버전 제어 소프트웨어와 상호 작용합니다. 이 연습에서는 프로젝트를 Team Foundation Server에 추가하는 단계를 제공합니다. 다른 버전 제어 소프트웨어를 사용하려면 해당하는 단계로 바꿉니다. Team Foundation Server를 사용하는 경우에는 Team Foundation Server에 연결 대화 상자가 나타납니다.
Team Foundation Server에 연결에서 솔루션을 추가할 팀 프로젝트가 발견된 서버를 클릭합니다.
참고
데이터베이스 프로젝트를 추가할 수 있는 팀 프로젝트가 없는 경우 프로젝트 계획 및 추적을 참조하십시오.
팀 프로젝트에서 데이터베이스 프로젝트를 추가할 팀 프로젝트를 클릭하고 확인을 클릭합니다.
소스 제어에 OrdersDB 솔루션 추가 대화 상자가 나타납니다.
확인을 클릭하여 기본값을 적용합니다.
데이터베이스 프로젝트와 해당 파일이 버전 제어에서 관리됩니다. 처음에는 데이터베이스 프로젝트와 해당 파일이 체크 아웃되어 있으므로 다른 팀 멤버가 이 프로젝트와 파일을 액세스할 수 있으려면 체크 인해야 합니다.
보기 메뉴에서 다른 창을 가리킨 다음 보류 중인 변경 내용을 클릭합니다.
보류 중인 변경 내용 창이 나타납니다.
설명 필드에 'Initial database project creation'을 입력합니다.
보류 중인 변경 내용 창의 도구 모음에서 체크 인을 클릭합니다.
데이터베이스 프로젝트와 이 프로젝트에 포함된 파일이 체크 인될 때 체크 인 진행률 대화 상자가 나타납니다. 솔루션 탐색기의 아이콘이 업데이트되어 파일이 버전 제어에 체크 인되었다는 것을 나타냅니다.
다음 단계
추가 연습을 사용하여 배포된 기존 데이터베이스로 작업하는 방법을 살펴볼 수 있습니다.
참고 항목
개념
데이터베이스를 빌드하여 스테이징 환경 또는 프로덕션 환경에 배포
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2010년 7월 |
연습 목적을 명확히 설명하고 다른 배포 시나리오에 대해 설명하는 항목에 대한 링크를 추가했습니다. |
고객 의견 |