Advertisement
Guest User

Untitled

a guest
Jul 16th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function DBUpdate_after {
  2.     if (!(Get-Module -ListAvailable -Name SqlServer)) {
  3.         Install-Module -Name SqlServer -AllowClobber
  4.     }
  5.     $DB_Server = $config.DB_SERVER
  6.     $DB_Name = $config.DB_NAME
  7.     $SPO_DB_USER = $config.SPO_DB_USER
  8.     $SPO_DB_PWD = $config.SPO_DB_PWD
  9.     $scriptsDir = $config.scriptsDir
  10.     # Récupérer version actuelle DB
  11.     $test = Invoke-Sqlcmd -Query "SELECT versioncp FROM INCOMPOS WHERE idcompos = 'SPO';" -Username sage -Password sage -ServerInstance $DB_Server -Database $DB_Name -OutputSqlErrors $true  -ErrorAction SilentlyContinue
  12.     if (!$test -or $null -eq $test.versioncp) {
  13.         Write-Host "Impossible de déterminer le numéro de version actuel de la base de données $DB_SERVER, echec de la mise à jour de la base de données";
  14.         return;
  15.     }
  16.     [version]$versionAct = $test.versioncp
  17.     Write-Host "La version de la base de donnée a été déterminée : $versionAct"
  18.     Start-Sleep -s 2
  19.  
  20.     # Recuperer les scripts sql
  21.     $files_before = Get-ChildItem -Path $scriptsDir\before_update_*.sql |
  22.     Where-Object {
  23.         [version]$version = $_.Name -replace '.*_|\.sql'
  24.         $version -gt $versionAct
  25.     }
  26.  
  27.     $files_after = Get-ChildItem -Path $scriptsDir\update_*.sql |
  28.     Where-Object {
  29.         [version]$version = $_.Name -replace '.*_|\.sql'
  30.         $version -gt $versionAct
  31.     }
  32.  
  33.     if ($files_before) {
  34.         foreach ($file in $files_before) {
  35.             Write-Host "Préparation pour la mise a jour de la base vers la version $versionTraitee en cours"
  36.             Invoke-SqlCmd -ServerInstance $DB_Server -Database $DB_Name -Username $SPO_DB_USER -Password $SPO_DB_PWD -InputFile $file -OutputSqlErrors $true -AbortOnError
  37.         }
  38.     }
  39.  
  40.     if (!$files_after) {
  41.         Write-Host "Aucun script de mise à jour de la base de données $DB_SERVER n'est disponible";
  42.         return;
  43.     }
  44.     # Executer les scripts : STOP si erreur
  45.     foreach ($file in $files_after) {
  46.         [version]$versionTraitee = $file.Name -replace '.*_|\.sql'
  47.         Write-Host "Mise a jour de la base vers la version $versionTraitee en cours"
  48.         Invoke-SqlCmd -ServerInstance $DB_Server -Database $DB_Name -Username $SPO_DB_USER -Password $SPO_DB_PWD -InputFile $file -OutputSqlErrors $true -AbortOnError
  49.     }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement