1

我正在尝试制作用于SqlPackage通过TFS Deployer服务部署数据库的 PowerShell 脚本。如果脚本直接从命令行执行,则脚本正在工作,但当 TFS Deployer 尝试执行它时它会失败,这两种情况都使用相同的用户帐户。

该服务在测试模式 ( TfsDeployer -d) 下作为控制台应用程序运行,但在作为 Windows 服务运行时也会失败。

这是日志文件(SqlPackagePowerShell 脚本中捕获的输出和异常捕获):

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'))"
    }
}
4

0 回答 0