0

我有使用MSBuildExtensions类似于以下SqlExecute命令一个MSBuild脚本:通过TeamCity的集成安全执行SQL无法在用户登录

<Target Name="DoSqlStuff"> 
    <SqlExecute TaskAction="Execute" 
       UseTransaction="True" 
       ConnectionString="Data Source=$(Sql_ServerName); Initial Catalog=$(Sql_DatabaseName); Integrated Security=SSPI;" 
       Files="@(sqlFiles)" 
       CommandTimeout="1800"> 
    </SqlExecute> 
</Target> 

如果我在命令行中运行这个(与所有正确的变量和whatnot)然后它工作得很好。

我有一个TeamCity的生成代理设置为是能够成功地在命令行中运行这个的MSBuild脚本(相同的所有变量进入)在同一台机器,我得到以下错误:

[MSBuild output] C:\BuildAgent\work\c5affefc453a825c\ContinuousBuild\Deploy.proj(22,3): error : SqlException: Login failed for user 'ALLIANCE\DANIELM$'. [C:\BuildAgent\work\c5affefc453a825c\ContinuousBuild\Deploy.proj.teamcity] 

我加了一些调试输出到这个任务:

<Message Text="Current user is $(USERNAME)" /> 
<Message Text="Current domain is $(USERDOMAIN)" /> 

当通过CMD运行,用户名是danielm

当通过TeamCity的运行中,用户名是danielm$

这两个域的域是相同的。

我做错了什么,或者我需要执行什么后续步骤来获取更多信息?

+0

代理是否以您的域用户身份运行? – 2013-03-13 20:19:09

回答

0

经过一段令人尴尬的时间后,我想出了这一个。

TeamCity Build Agent服务已设置为以本地系统帐户登录。

我进入服务,右键单击TeamCity生成代理 - >属性。

“登录”选项卡,然后单击“登录为'此帐户'”单选按钮并设置我的凭据。

将服务设置为登录,因为我的用户帐户为MsBuild脚本提供了使用集成安全性登录的正确权限。

最终,我们将为此目的创建一个用户,以便它可以上线。