2011-12-02 8 views
2
매니페스트

에서 연결 문자열을 확인할 수 없습니다 배포 VSDBCMD : TFS 배포하려고 할 때, http://msdn.microsoft.com/en-us/library/ff805001.aspx데이터베이스 프로젝트를 배포 할 수 없습니다 -이 튜토리얼 팀 재단 빌드에서 데이터베이스 배포 사용자 정의 워크 플로를 정의하는 방법을 보여줍니다

을 내 데이터베이스, 그것은 내가 연결 문자열을 지정해야합니다 불평. .deploymanifest 파일을 명령 줄 매개 변수로 제공하고 .deploymanifest 파일에 연결 문자열이 있습니다.

VSDBCMD가 연결 문자열을 입력하지 않았다고 불평하는 이유는 무엇입니까? .deploymanifest 파일에도 포함되어있는 미해결 참조에 대해 불평하고 있습니다. 다음은

내 .deploymanifest 파일의 맨 위에 몇 줄 수 있습니다 :

<?xml version="1.0" encoding="utf-8"?> 
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
     <PropertyGroup> 
     <TargetConnectionString>Data Source=SQL2K8DEV;Integrated Security=True;Pooling=False</TargetConnectionString> 
     <TargetDatabase>Super_DB</TargetDatabase> 
     <DeployToDatabase>True</DeployToDatabase> 
     <DeployToScript>True</DeployToScript> 
. 
. 
. 

편집 : 위의 .deploymanifest 파일 미리보기가 정확하지 . TFS 빌드가 아닌 내 로컬 빌드에서 생성 된 .deploymanifest 파일에서이 스 니펫을 가져 왔습니다. TFS 빌드에 의해 생성 된 .deploymanifest가 잘못되어 궁극적으로 내 문제를 해결 한 구성을 조사하게되었습니다 (아래 답변 참조).

그리고 여기에 내가 VSDBCMD에서 점점 오전 오류입니다 :이에

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VSTSDB\Deploy\VSDBCMD.EXE /a:Deploy /dd+ /dsp:Sql /manifest:RTS.deploymanifest 

Before you can deploy a database, you must specify a connection string in the project properties or at a command prompt. 

TSD\\TXDASQL2K8DEV\RTS_Deploy\DEV_Nightly_build\RTS Development Nightly Build\RTS Development Nightly Build_20111202.7\RTS.dbschema (380,7) 
- The reference to external elements from the source named 'Master.dbschema' could not be resolved, because no such source is loaded. 

답변

2

빌드가 릴리스 구성을 사용하고 있었으며 DB에만 배포하기위한 디버그 구성 만 설정했음을 알 수 있습니다. 응. 릴리스 구성을 업데이트하고 나면 정상적으로 작동합니다.

TFS 빌드에 의해 생성 된 .deploymanifest 대신 로컬로 빌드 된 .deploymanifest에서 처음 몇 줄을 가져 와서 나의 원래 질문이 오해의 소지가있었습니다. 부끄러운 줄 알았는데 ...

2

100 %,하지만 난 우리의 내부 SQL 서버 상자에 데이터베이스를 배포 할 수있는 동일한 프로세스 (this)를 사용했습니다 자동 빌드의 경우 워크 플로 디자이너의 인수를 사용하여 연결 문자열을 쉽게 설정할 수 있습니다. 당신이 ** Invoke VSDBCMD 작업에 DBSERVER (예를 들어)라는 디자이너의 새로운 인수를 만들 경우

그래서 당신은 추가 할 수 있습니다 " /cs:Data Source=" + DBServer + ";Integrated Security=True;Pooling=False"

당신이 당신의 전체 VSDBCMD을 parametise 수있는 등 (이에 대한 재생 실제로 가치가

매니페스트 이름)을 사용하여 일반 데이터베이스 구축/배포를 수행 한 다음 다른 빌드에 사용할 수 있습니다 (이미없는 경우).

** 또한 나타나는 방법을 편집하고 인수 목록의 Metadata 속성을 사용하여 빌드 정의에 유용한 이름/설명을 제공 할 수 있습니다.

+0

매우 뛰어난 응답, 잘 부탁드립니다. 불행히도, 문제는 간단한 사용자 오류로 인한 것입니다 (내 대답은 아래 참조) – simon