IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration SQL Server Discussion :

Créer la base if not exists en powershell [2016]


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 817
    Billets dans le blog
    2
    Par défaut Créer la base if not exists en powershell
    Bonjour a tous

    je cherche a déployer l'outil sp_whoisactive sur toutes mes instances sql server en passant par quelques lignes de code en Powershhel

    le script il interroge mes instances sql si il ne trouve pas la base de donnée dédier il va le crée a travers l'objet SMO et il installe la module

    sauf s'il trouve la base il m'envoie un message d'erreur en disant que la base exists malgré que je test l’existence de la base avant leur création

    Qui a une idée sur l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Import-Module "SQLPS" -DisableNameChecking
    Import-Module -Name "${PSScriptRoot}\Module\logModule.psm1" -DisableNameChecking
    Add-Type -AssemblyName "Microsoft.SqlServer.Smo"
    $servers= 'DESKTOP-95KKMMH\PRODUCTION','DESKTOP-95KKMMH'
    $database='produit'
     
    foreach($server in $servers)
    {
    Set-Location SQLSERVER:\SQL\$server 
    $db = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Database -Argumentlist $server, $database
     
    if($db -ne $null)
    {
    $db.Create()  
    }
    else 
    {
    InitLog -PathLog "${PSScriptRoot}\${Instance}\DbaWhoIsActive.log" -NameScript "PsBackupFull"
    Log -message "Server : ${$server}"
    Install-DbaWhoIsActive -SqlInstance $server -Database $database
    }
    }
    merci pour vos aides
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    Hello,

    Plusieurs choses:

    - Il vaut mieux utiliser le module SqlServer plutôt que SQLPS
    - New-Object -TypeName Microsoft.SqlServer.Management.Smo.Database est un constructeur et ne vérifie pas si ta base existe ou non. D'ailleurs ton objet ne sera jamais à $null quel que soit le cas .. base existante ou non .. d'où l'erreur que tu as.

    Je proposerai cela comme alternative au code initial:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Import-Module SqlServer
     
    $server = 'server'
    $database = 'dummy3'
     
    $server = New-Object Microsoft.SqlServer.Management.Smo.Server -ArgumentList $server
     
    $dbcheck = $server.Databases | Where-Object { $_.Name -eq $database }
     
    if ($null -eq $dbcheck){
        $db = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Database -Argumentlist $server, $database 
        $db.Create()
    }
    Else {
        Write-Host "Exist"
    }
    Néanmois je t'invite à regarder du côté des dbatools qui est un framework plutôt complet d'administration des instances, bases mssql et qui inclut un cmdlet assez complet pour créer des bases de données.

    A+

  3. #3
    Membre émérite

    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Novembre 2014
    Messages
    817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Auditeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 817
    Billets dans le blog
    2
    Par défaut
    merci bien David

    cela me paraît clair

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/12/2010, 14h38
  2. [SQL2K] Créer une base OLAP sur un serveur existant ?
    Par dotnet dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/01/2007, 10h47
  3. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  4. Requète avec NOT EXISTS
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 23/09/2003, 15h20
  5. [JCreator] "package tools does not exists"
    Par snyper147 dans le forum Environnement de Développement Intégré (EDI)
    Réponses: 2
    Dernier message: 04/05/2003, 20h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo