2011-12-02 38 views
2

連接字符串本教程介紹瞭如何定義自定義工作流部署從團隊基礎建立一個數據庫: http://msdn.microsoft.com/en-us/library/ff805001.aspx無法部署數據庫項目 - VSDBCMD部署沒有看到明顯的

然而,當TFS嘗試部署我數據庫,它抱怨我必須指定一個連接字符串。我提供了.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文件片段是不正確的。我從我的本地版本生成的.deploymanifest文件中取出了該片段,而不是TFS版本。由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

原來,構建使用的是發佈配置,並且我只設置了調試配置以部署到數據庫。啊。一旦我更新發布配置,它工作得很好。

我原來的問題是誤導,因爲我從我的本地構建的.deploymanifest而不是由TFS構建生成的.deploymanifest的頭幾行。對我感到羞恥...

2

沒有100這個%,但我已經使用了相同的過程(this)在數據庫部署到我們的SQL Server內部箱自動構建,您可以很輕鬆地在工作流設計器中使用參數設置連接字符串。

所以,如果你創建在設計**在Invoke VSDBCMD任務調用DBSERVER(例如)一個新的說法,你可以添加" /cs:Data Source=" + DBServer + ";Integrated Security=True;Pooling=False"

其實值得玩這個約,你可以parametise你的整個VSDBCMD(如清單名稱)來進行通用數據庫構建/部署,然後可以將其用於您可能具有的其他構建(如果您還沒有)。

**您還可以使用參數列表中的Metadata屬性編輯它出現的方式並在構建定義中給出它的有用名稱/描述。

+0

非常好的回覆,謝謝。不幸的是,這個問題是由簡單的用戶錯誤引起的(請參閱下面的答案) – simon