我正在尝试制作用于SqlPackage
通过TFS Deployer服务部署数据库的 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'))"
}
}