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腳本提供了使用集成安全性登錄的正確權限。

最終,我們將爲此目的創建一個用戶,以便它可以上線。