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

Développement SQL Server Discussion :

Récupérer le résultat d'un SQL dans PowerShell


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    154
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 154
    Par défaut Récupérer le résultat d'un SQL dans PowerShell
    Hello,

    Je cherche à récupérer dans PowerShell le nombre de ligne contenu dans une table.

    Je réussi à récupérer le nb mais ça me rajoute aussi le nombre de ligne dans le select ( 1 ligne correspondant à ce que l'on a dans l'onglet message de SQL Manager Studio). Je ne veux que le résultat de la requête

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    Function Sql_Query([string] $sqServer, [string] $sqBase, [string] $sqQuery)
     {
       Clear
       #Etablit la connexion avec la base SQL.
       $Connection = New-Object System.Data.SqlClient.SqlConnection
       $Connection.ConnectionString = "Server = $sqServer; Database = $sqBase; Integrated Security = True" 
     
       #Crée une commande SQL.
       $sqlCmd = New-Object System.Data.SqlClient.SqlCommand
       $sqlCmd.CommandTimeout = 30 
       $sqlCmd.CommandText = $sqQuery
       $sqlCmd.Connection = $Connection 
     
       #Exécute et récupère le résultat.
       $DataSet = New-Object System.Data.DataSet
       $Adapter = New-Object System.Data.SqlClient.SqlDataAdapter
       $Adapter.SelectCommand = $sqlCmd 
       $Adapter.Fill($DataSet)
     
       #Ferme la connexion avec la base SQL.
       $Connection.Close()
     
       #Renvoie le résultat.
       return $DataSet.Tables[0]
     }
     
    #Paramètres de connexion.
    $SQLSERVER = "OPQSESB01\MS_QSE_SSDS"  	
    $SQLBASE = "1-transfert"             	
    $SqlQuery = "SET NOCOUNT ON select count(*) from [1-transfert].[dbo].[CATEGORIE]"
     
    #Exécute la requête.
    $retour = Sql_Query $SQLSERVER $SQLBASE $SqlQuery 
     
    foreach ($raw in $retour)
     {
       Try { write-host $raw[0] } catch {}
     }
     write-host "Exécution terminé."
     
    #Fin.
    Dans la table il y a 10 lignes

    Résultat obtenu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    1
    10
    Exécution terminé.
    Comment faire pour pour ne pas faire apparaitre les messages. J'ai essayé avec les SET NOCOUNT ON mais ça ne fonctionne pas.

    Comme je dois faire des calculs et des actions en fonctions du nb de lignes il ne me faut que le nb.

    D'avance merci

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Si j'exécute ton script je n'ai pas la première valeur (1), mais seulement le résultat du count(*). Donc de mon côté ça marche.

    Une remarque : je ne sais pas pour quel usage tu vas réutiliser la fonction, mais si tu récupères un dataset, ton script doit placer en mémoire l'intégralité du résultat. Pour des jeux de résultats plus volumineux, le datareader sera plus rapide et plus léger (en tout cas du point de vue du script, pas toujours du côté SQL Server).

  3. #3
    Membre confirmé
    Homme Profil pro
    France
    Inscrit en
    Juillet 2016
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : France
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2016
    Messages : 75
    Par défaut
    Bonjour,

    Je me sers du script cité dans la discussion mais j'ai moi aussi un résultat avec le (1) au début. Sauriez vous le supprimer ?

    Cordialement,

Discussions similaires

  1. [AC-2003] comment récupérer résultat de requête SQL dans zone de liste ?
    Par jlp65 dans le forum VBA Access
    Réponses: 11
    Dernier message: 21/03/2014, 18h18
  2. [PowerShell] Powershell: récupérer le résultat d'un exe dans une RichTextBox
    Par Bruno.Lanciau dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 12/02/2014, 10h17
  3. Réponses: 3
    Dernier message: 02/02/2007, 14h30
  4. Récupérer le résultat d'une PS dans une table temporaire ?
    Par maitrebn dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 13/02/2006, 09h24
  5. Réponses: 7
    Dernier message: 30/06/2005, 10h06

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