2009-08-04 7 views
6

SQL Server 2008 용 Visual Studio 2008 데이터베이스 프로젝트데이터베이스 프로젝트 사전 배포

이 프로젝트에는 배포 전 및 배포 후 SQL 스크립트에 대한 자리 표시자가 있습니다. 그들은 잘 작동합니다. 대부분의 경우 어쨌든.

프로젝트에는 Always-Recreate-Database에 대한 옵션이 있습니다. 기존 데이터베이스를 삭제하고 매번 새로운 오븐에서 뜨거운 데이터베이스를 생성 할 수 있습니다.

데이터베이스를 배포 할 때 전체 SQL 스크립트가 함께 실행됩니다.

데이터베이스가 복제에 사용되고 배포 후 스크립트의 일부로 서버를 배포본으로 지정하고 복제본을 작성한 후 기사를 추가합니다.

따라서 복제를 종료해야합니다. 논리적 인 장소는 사전 배포에있었습니다.

VS2008은 내 얼굴에서 아주 잘린 미소를 지워 버렸습니다. Always-Recreate-Database가 선택되어 있으면 스크립트가 데이터베이스를 삭제하고 다시 작성한 다음 내 Pre-Deployment 스크립트를 넣은 다음 다른 모든 것들을 넣습니다.

전에 배포가 발생하기 전에 배포 전 SQL 스크립트가 실행될 위치에서 실행되도록 데이터베이스 프로젝트의 템플릿을 변경할 수있는 방법이 있습니까?

+0

에 대한 느낌을주기 또한보십시오. –

답변

3

이것은 정확히 사용자가 수행 한 내용이 아니지만 문제를 해결하는 데 도움이 될 수 있습니다. 빨리 살펴본 후 사전 및 사후 배포 스크립트의 순서를 변경하는 것이 너무 어려울 수 있다고 생각합니다.

제가 알기에, 배포 프로젝트가 시작되기 전에 자신의 코드를 실행할 수있는 몇 가지 갈고리가 있습니다.

  1. .dbproj 파일에 PreDeployEvent 속성을 정의하십시오.
  2. .dbproj 파일에 BeforeDeploy 대상을 정의하십시오.

이 중 하나가 올바른 시점에 실행되어야한다고 생각합니다.

PreDeployEvent 속성을 사용하는 경우 실행할 단일 명령 줄을 지정해야합니다. 허술한 예 :

<PropertyGroup> 
    <PreDeployEvent>sqlcmd.exe -i myscript.sql</PreDeployEvent> 
</PropertyGroup> 

더 많은 제어를 원하는 경우에, 당신은 하나 이상의 사용자 정의의 MSBuild 작업을 실행할 수 있도록합니다 BeforeDeploy 대상을 사용합니다. 여기에 또 다른 원유 예입니다 : 그런데

<Target Name="BeforeDeploy"> 
    <Message Text="BeforeDeploy" Importance="high" /> 
</Target> 

, 자유롭게 사용할 사용자 지정 작업의 많음이있다, www.msbuildextensionpack.com에서 사람들을있는 하나의 예.

+0

프로젝트의 모든 종류의 장소에 PropertyGroup을 넣으려고했지만 아무 것도 작동하지 않았습니다. 내가 가지고 놀 수있는 샘플이 있습니까? –

+1

http://pastie.org/575352 - 처음 몇 줄이면 충분합니다. 배포 후 VSTS2008에서 출력 창을 확인합니다. 배포 전후에 데이터베이스가 있다는 출력이 표시됩니다 (DB를 삭제하고 다시 만들기 전에 명령이 실행됨을 나타냄). –