TFS构建:无法连接到数据库

时间:2017-10-26 22:45:21

标签: sql-server tfs msbuild sql-server-data-tools

我尝试设置TFS构建以部署到我的SQL Server Express实例,但MSBuild始终失败:

  

C:\ Builds \ 1 \ portal \ Deploy to Portal_Dev \ bin \ DB.publish.sql:无法连接到主服务器或目标服务器' Portal_Deploy_Dev'。您必须在主服务器或目标服务器中拥有具有相同密码的用户' Portal_Deploy_Dev'。

这是发布文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludeCompositeObjects>True</IncludeCompositeObjects>
    <TargetDatabaseName>Portal_Deploy_Dev</TargetDatabaseName>
    <DeployScriptFileName>CCA_DB.sql</DeployScriptFileName>
    <TargetConnectionString>Data Source=Machine\SQLEXPRESS;Integrated Security=True;User ID=username;Password=password;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False</TargetConnectionString>
    <ProfileVersionNumber>1</ProfileVersionNumber>
  </PropertyGroup>
</Project>

使用的命令行参数:

 /t:Build;Publish
 /p:SqlPublishProfilePath=..\DB\Publishing\Portal_Deploy_Dev.publish.xml

2 个答案:

答案 0 :(得分:0)

首先尝试在Visual Studio中构建和部署项目,方法是右键单击并选择发布,然后选择配置文件或在构建代理上使用命令行(msbuild)。

如果问题与TFS定义有关,这将缩小范围。检查数据库服务器是否存在任何无效的DNS条目。在目标计算机上打开防火墙。还尝试将SSDT更新到最新版本。

更多解决方法可以在以下问题中查看类似错误:

答案 1 :(得分:0)

几个星期前我遇到了同样的问题,在我的情况下,在连接字符串中我们没有用户名和密码,因为我们使用Windows身份验证连接到数据库,我的意思是当你选择连接时发布个人资料。

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludeCompositeObjects>True</IncludeCompositeObjects>
    <TargetDatabaseName>MyDatabase</TargetDatabaseName>
    <DeployScriptFileName>MyDatabaseChanges.sql</DeployScriptFileName>
    <BlockOnPossibleDataLoss>True</BlockOnPossibleDataLoss>
    <IgnoreRoleMembership>True</IgnoreRoleMembership>
    <IgnorePermissions>True</IgnorePermissions>
    <ExcludeServerAuditSpecifications>True</ExcludeServerAuditSpecifications>
    <ExcludeServerRoleMembership>True</ExcludeServerRoleMembership>
    <ExcludeServerRoles>True</ExcludeServerRoles>
    <ExcludeUsers>True</ExcludeUsers>
    <ExcludeLogins>True</ExcludeLogins>
    <IgnoreUserSettingsObjects>True</IgnoreUserSettingsObjects>
    <ProfileVersionNumber>1</ProfileVersionNumber>
    <TargetConnectionString>Data Source=MyServer;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True</TargetConnectionString>
  </PropertyGroup>
</Project>

然后在TFS中,我们使用用户名和密码(作为MSBuild参数的一部分),

/p:TargetUserName="$(user)" /p:TargetPassword="$(password)"

我们正在与该用户连接到数据库,现在修复了错误,只是将其赋予TFS TargetUserName db_owner角色,并且用户是本地用户,我们更改为网络用户。我希望能帮助你。