2011-12-02 73 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