2016-09-14 2 views
0

Мне нужно запустить dacservice.deploy для обновления базы данных с версии $from до версии $to. Вот мой п.с. сценарий: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)  
} 

В настоящее время dacService.Deploy работают параллельно по каким-либо причинам.

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» и посмотреть состояние передаваемого события, но обратите внимание, что я уверен, что вы получаете несколько «завершенных» сообщений для каждого этапа, поэтому вам понадобится чтобы увидеть, что сообщение говорит, когда оно заканчивается, а также если оно не с ошибкой.

ed

Смежные вопросы