TFS DeployerサービスSqlPackage
を介してデータベースを展開するために使用する PowerShell スクリプトを作成しようとしています。スクリプトをコマンド ラインから直接実行すると機能しますが、TFS Deployer がスクリプトを実行しようとすると失敗します。どちらの場合も同じユーザー アカウントが使用されます。
サービスは、コンソール アプリケーションとしてテスト モード ( TfsDeployer -d
) で実行されていますが、Windows サービスとして実行されている場合にも失敗します。
これはログ ファイルです (キャプチャされた出力SqlPackage
と PowerShell スクリプトでキャッチされた例外):
11/18/2012 17:51:49 | Publishing to database 'databaseName' on server 'machineName'.
11/18/2012 17:51:56 | An error occurred while the batch was being executed.
11/18/2012 17:51:56 | System.Management.Automation.RemoteException: *** Could not deploy package.
これらは、私が収集できた唯一の情報です。エラー コード (HRESULT) は、キャッチされた例外に存在しませんでした。
PowerShell スクリプトは次のようになります。
try{
$cmd = Join-Path (Get-Item "Env:ProgramFiles(x86)").Value "Microsoft SQL Server\110\DAC\bin\SqlPackage.exe"
$src = Join-Path $source "db.dacpac"
$cfg = Join-Path $source "db.publish.xml"
&$cmd /Action:Publish /SourceFile:$src /Profile:$cfg 2>&1 | ForEach-Object -Process {
Write-Log $_
}
}
catch [Exception] {
Write-Log $_.Exception.ToString()
if($_.Exception.HResult) {
Write-Log "Code: $($_.Exception.HResult.ToString('X'))"
}
}