0

次のようなMSBuildExtensionsSqlExecuteコマンドを使用する MSBuild スクリプトがあります。

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

これをコマンドラインから(すべての正しい変数などを使用して)実行すると、問題なく動作します。

コマンドラインからこの MSBuild スクリプトを (すべて同じ変数を入力して) 正常に実行できる同じマシンになるように TeamCity ビルド エージェントをセットアップしましたが、次のエラーが表示されます。

[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 Build Agent -> Properties を右クリックしました。

[ログオン] タブで、['このアカウント' としてログオン] のラジオ ボタンをクリックし、資格情報を設定します。

自分のユーザー アカウントとしてログオンするようにサービスを設定すると、MsBuild スクリプトに、統合されたセキュリティでログインするための適切なアクセス許可が与えられました。

最終的に、これを公開する準備ができたら、この目的のためにユーザーを作成します。

于 2013-03-13T22:15:29.433 に答える