0

我有一个 MSBuild 脚本,它使用SqlExecute类似于以下的 MSBuildExtensions 命令:

<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>

如果我从命令行运行它(使用所有正确的变量和诸如此类的东西),那么它就可以正常工作。

我有一个 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$

两者的域相同。

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

4

1 回答 1

0

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

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

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

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

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

最终,当它准备好上线时,我们将为此目的创建一个用户。

于 2013-03-13T22:15:29.433 回答