2016-09-14 4 views
0

데이터베이스를 $from에서 으로 업데이트하려면 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)  
} 

는 현재 dacService.Deploy 어떤 이유에서 병렬로 실행 : 여기 내 PS 스크립트입니다.

어쨌든

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의 상태를 확인해야합니다. 그러나 각 단계마다 몇 가지 "완료"메시지가 표시되도록해야합니다. 또한 메시지가 끝나면 오류 메시지와 함께 실패했는지 확인할 수도 있습니다.

ed

관련 문제