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 :

Script PowerShell vide - Administration SqlServer


Sujet :

Administration SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut Script PowerShell vide - Administration SqlServer
    Bonjour à tous,

    Afin d'obtenir des infos sur toutes les instances de mon réseau j'ai rédigé un script Powershell.
    Je souhaite renvoyer le résultat de ce script sous format csv afin de le récupéra pour un site intranet.

    Le problème que je rencontre est que le fichier généré est vide.

    Pouvez vous svp m'aider?

    foreach ($svr in get-content "D:\test\ListeInfoServeurs.txt")
    {
    $con = "server=$svr;database=master;Integrated Security=sspi"
    $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) / 1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
    $da = new-object System.Data.SqlClient.SqlDataAdapter ($cmd, $con)
    $dt = new-object System.Data.DataTable
    $da.fill($dt) | out-null
    $svr
    $dt | Format-Table -autosize
    } $output | export-csv export.csv -force -NoTypeInformation
    $output | FT

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Svp quelqu'un peut il m'aider c'est urgent et j'arrête pas de faire des tests sans succès!

    C'est très frustrant

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 89
    Par défaut
    Bonjour,

    Perso j'avais utilisé Invoke-Sqlcmd :
    http://msdn.microsoft.com/fr-fr/library/cc281720.aspx
    (non compris dans le powershell standard )

    par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Invoke-Sqlcmd -ServerInstance "serverName\InstanceName" -DATABASE Master -Query "la requete" | export-csv "c:\temp\extract_ps.csv" -UseCulture -NoTypeInformation
    ça ne répond à ton problème mais c'est une autre piste ...

    Bonne journée,

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2008
    Messages : 100
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Get-Content "D:\test\ListeInfoServeurs.txt" | Foreach {
      $con = "server=$svr;database=master;Integrated Security=sspi"
      $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) /    1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
      $da = new-object System.Data.SqlClient.SqlDataAdapter ($cmd, $con)
      $dt = new-object System.Data.DataTable
      $da.fill($dt) | out-null
      $svr
      $dt | Format-Table -autosize
    } | export-csv export.csv -force -NoTypeInformation
    J'aurais plutôt fait comme ça, mais je suis d'accord avec krousty, il est plus simple d'utiliser les cmdlets SQL fournit par Microsoft.

    Si vous souhaitez utilisez ces outils il va vous falloir au minimum un post avec Powershell d'installer ainsi que Les Windows Powershell Extension. Si vous lancez la commande à partir d'un server SQL, pas besoin de vous embêtez vous disposez déjà de ces cmdlets il suffit de les charger comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    add-pssnapin sqlserverprovidersnapin100
    add-pssnapin sqlservercmdletsnapin100
    Et là votre code devient plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) /    1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
    gc "D:\test\ListeInfoServeurs.txt" | % { Invoke-Sqlcmd -Query $cmd -Serverinstance $_ -database MASTER } | export-csv export.csv -NoTypeInformation
    J'ai pas testé ce code, mais ça devrait être ok

    @+

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2007
    Messages : 8
    Par défaut
    Merci de votre retour les amis

    La correction de mon script renvoie effectivement un fichier csv qui n'est pas vide mais avec les mauvaises infos

    Voici le résultat:

    "PSPath","PSParentPath","PSChildName","PSDrive","PSProvider","ReadCount","Length"
    "D:\mssql\test\ListeInfoServeurs.txt","D:\mssql\test","ListeInfoServeurs.txt","D","Microsoft.PowerShell.Core\FileSystem","5","16"
    "D:\mssql\test\ListeInfoServeurs.txt","D:\mssql\test","ListeInfoServeurs.txt","D","Microsoft.PowerShell.Core\FileSystem","5","16"
    "D:\mssql\test\ListeInfoServeurs.txt","D:\mssql\test","ListeInfoServeurs.txt","D","Microsoft.PowerShell.Core\FileSystem","5","16"
    "D:\mssql\test\ListeInfoServeurs.txt","D:\mssql\test","ListeInfoServeurs.txt","D","Microsoft.PowerShell.Core\FileSystem","5","16"
    "D:\mssql\test\ListeInfoServeurs.txt","D:\mssql\test","ListeInfoServeurs.txt","D","Microsoft.PowerShell.Core\FileSystem","5","16"

    En ce qui concerne vos remarques concernant les cmdlets SQL je ne les connaissais pas.
    En effet je débute sur PowerShell suite à cette demande de référencer les serveurs de mon parc.

    J'ai donc chargé les cmdlets car je suis sur un serveur de dev SqlServer et j'ai installé PowerShell 2.0 mais le script suivant renvoie également un fichier vide

    $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) / 1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
    gc "D:\test\ListeInfoServeurs.txt" | % { Invoke-Sqlcmd -Query $cmd -Serverinstance $_ -DATABASE MASTER } | export-csv export.csv -NoTypeInformation

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2008
    Messages : 100
    Par défaut
    Salut, que donne ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $cmd = "SELECT name, physical_name, CAST(SUM(size * 8) AS FLOAT) /    1024 AS [Taille en Mo] FROM sys.master_files GROUP BY name, physical_name"
    gc "D:\test\ListeInfoServeurs.txt" | % {
      Invoke-Sqlcmd -Query $cmd -Serverinstance $_ -DATABASE MASTER 
    } | Out-File export.csv -append

Discussions similaires

  1. Formation administration sqlserver
    Par elharet dans le forum Administration
    Réponses: 1
    Dernier message: 26/11/2009, 13h39
  2. Essayer d'activer un script powershell sous IIS
    Par machpro dans le forum IIS
    Réponses: 1
    Dernier message: 06/12/2008, 00h08

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