2016-09-14 8 views
0

$fromからバージョンにデータベースを更新するには、dacservice.deployを実行する必要があります。ここに私のPSスクリプトは次のとおりです。現在dacService.Deployはいくつかの理由のために並列に実行されているpowershell:シーケンス内で複数のdacservice.deploy呼び出しを実行する方法

#deploy 
For ($i=$from; $i -le $to; $i++) {  
    $dacpacFileName = $dacpacPathName + $i + '.dacpac' 

    Write-Output "-----------------------------------------------------------------------" 
    Write-Output "Deploying... $dacpacFileName to $databaseServerName\$targetDatabaseName" 
    Write-Output "-----------------------------------------------------------------------" 

    #dacpac  
    $dp = [Microsoft.SqlServer.Dac.DacPackage]::Load($dacpacFileName)  

    #options 
    $options = New-Object Microsoft.SqlServer.Dac.DacDeployOptions 
    $options.GenerateSmartDefaults="True" 
    $options.BlockOnPossibleDataLoss="False" 
    $options.IncludeTransactionalScripts = "True" 

    #deploy 
    $dacService.Deploy($dp, $targetDatabaseName, $upgradeExisting, $options)  
} 

。とにかく

enter image description here

一つ一つを実行するように依頼しますか?

PS:私はsqlPackage.exeで行うことができます。

#deploy 
For ($i=$from; $i -le $to; $i++) {  
    $dacpacFileName = $dacpacPathName + $i + '.dacpac' 

    Write-Output "-----------------------------------------------------------------------" 
    Write-Output "Deploying... $dacpacFileName to $databaseServerName\$targetDatabaseName" 
    Write-Output "-----------------------------------------------------------------------" 

    & $sqlPackageExePath /a:Publish /sf:$dacpacFileName /tdn:$targetDatabaseName /TargetServerName:$databaseServerName /p:GenerateSmartDefaults=true 

    Write-host "Finished" 
} 

答えて

0

MSDNドキュメントは、この分野で少し軽いですが、デプロイ方法は非同期であるので、この方法は完了したが、操作は、進行中のままです。

"DacServices.ProgressChanged"イベントをフックし、渡されたイベントargのステータスを調べる必要がありますが、各ステージでいくつかの "Complete"メッセージが必要になることは間違いありませんメッセージが終了したときに何が表示されているのか、エラーで失敗したのかを確認することもできます。

ed

関連する問題