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

WinDev Discussion :

Lister les instances SQL Server sur le réseau [WD20]


Sujet :

WinDev

  1. #1
    Invité
    Invité(e)
    Par défaut Lister les instances SQL Server sur le réseau
    Bonjour, j'aimerais pouvoir récupérer la liste de toutes les instances de SQL Server sur le réseau.
    En faisant des recherches sur le net, j'ai trouvé la commande suivante:

    Code WLANGAGE : Sélectionner tout - Visualiser dans une fenêtre à part
    ddelance("cmd.exe /C sqlcmd /L > C:\resultat.log")

    Cette ligne de code marche très bien sur mon poste en local, qui est en windows 7 Pro 64 bits (j'obtiens un fichier créée qui répertorie la liste complète des instances sql).
    J'exécute cette ligne de code sur une image WM WARE, qui est en windows server 2012, 64 bits, et là, mon fichier n'est pas créée, j'ai même le programme cmd.exe qui se ferme en suivant. J'ai voulu alors copier la commande à exécuter sur cmd.exe, et j'ai le message suivant : Accès refusé.

    Y aurait-il une autre alternative à cela?

    Merci

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    Est-ce que l'écriture est possible sur le C: en direct ? Peut-être faudrait-il travailler dans le dossier utilisateur (mes documents par exemple) et supprimer le fichier ensuite.

    bon courage,

    Nicolas

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Surement un problème de droit...

    Avez vous tenté de diriger la sortie de la commande dans un fichier situé dans un répertoire dans lequel vous avez les droits ?
    Etes vous logué en admin ?
    Avez-vous tenté de créer le fichier manuellement ?
    Avez vous tenté de mettre un pause après la commande (histoire de lire le retour d'exécution dans la console) ?
    L'UAC est elle activée sur le poste ?

    PS : pardon pour le doublon, je n'avais pas vu la réponse Nicolas...
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  4. #4
    Invité
    Invité(e)
    Par défaut
    La réponse ne vient pas des droits ou non d'écriture sur mon lecteur, quand j'exécute la commande sur cmd.exe
    J'obtiens ceci sur mon image :
    ;UID:ID de connexion=?;PWD:Mot de passe =?;Trusted_Connection:Utiliser la sécurité intégrée=?;*APP:AppName=?;*WSID:ID de station de travail=?;
    J'ai testé cette commande sur une image:
    - windows xp SP3 : la liste est vite
    - windows server 2008 R2 Foundation SP1 : ça marche

    Au sujet de l'UAC, c'est activé (protection par défaut).
    J'ai testé la création d'un fichier txt sur C:\, je n'ai pas les droits, concernant le retour de la fonction, je récupère la valeur Vrai, je me connecte à Windows avec un utilisateur ayant le profil Administrateur

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Citation Envoyé par romulus001 Voir le message
    La réponse ne vient pas des droits ou non d'écriture sur mon lecteur, quand j'exécute la commande sur cmd.exe
    J'obtiens ceci sur mon image :
    Hé bien, quelle franche affirmation que voilà !!! je ne vois pas le lien qu'il y a entre ce que vous nous montrez (le retour de sqlcmd) et ce que nous vous indiquons.
    Il me semble que la différence entre les 2 commandes est l'absence de redirection dans un fichier (sur C... je vous confirme qu'il s'agit d'un problème lié à l'UAC...

    Le retour de la fonction correspond au lancement de cmd.exe (au retour de DDELance)... pas à l'exécution du script dans cmd.. vous pourriez lancer "cmd.exe MonCulCestDuPoulet" et avoir un retour positif sous Windev...

    Avoir un profil administrateur et avoir un jeton administrateur pour le lancement d'un programme n'est pas la même chose quand l'UAC est active...
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Quand je fais
    J'obtiens ceci
    ;UID:ID de connexion=?;PWD:Mot de passe =?;Trusted_Connection:Utiliser la sécurité intégrée=?;*APP:AppName=?;*WSID:ID de station de travail=?;
    Là, je ne tente pas de récupérer quoi que ce soit, je regarde juste si la commande marche, et je vois que ce n'est pas le cas sur mon image server 2012, donc pas la peine de voir si j'ai les droits de créer un fichier, comme avait demandé Nicolas_Jeanneau, et toi, dans ton 3eme point, pour l'instant, je n'ai pas regardé ton 1er point.

    Après, si tu dis que l'origine du problème vient de l'UAC, je pourrais essayer de voir cela, mais comment cela doit-être modifié? j'ai mis la sécurité la plus basse (exactement comme c'est le cas sur mon poste en local) mais rien de nouveau.

    Autre solution:
    J'ai trouvé ce code qui me retourne bien toutes mes instances SQL, mais il est en vb.net, est-il possible de compiler du code vb.net dans windev?
    code: https://msdn.microsoft.com/en-us/lib...vs.100%29.aspx

  7. #7
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Ok vous avez donc 2 problèmes :

    -> l'exécution de la commande qui vous renvoie nawak (au passage vous pouvez directement taper sqlcmd /Lc dans cmd...)
    -> la création d'un fichier contenant la sortie de la commande.

    bon courage.
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  8. #8
    Invité
    Invité(e)
    Par défaut
    La création d'un fichier est un faux problème, il suffit juste de changer l'adresse (en utilisant par exemple fRépertoireTemp).
    J'ai voulu me servir du code présent ici, j'ai voulu alors taper le code suivant :

    Code WINDEV : 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
    MesInstances  est une chaîne		= ""
     
    cpSource est une chaîne = ""
    oScript est un objet Automation "MSScriptControl.ScriptControl"
     
    cpSource = 
    [
    	Public Function  ListeInstancesSQL()
     
    	ListeInstancesSQL=""
    	Dim instance As Sql.SqlDataSourceEnumerator = Sql.SqlDataSourceEnumerator.Instance
    	Dim Matable As System.Data.DataTable = instance.GetDataSources()
     
    	For Each row As DataRow In Matable.Rows
    		For Each col As DataColumn In Matable.Columns
    			ListeInstancesSQL = ListeInstancesSQL & col.ColumnName & "#" & row(col) & "§"
    		Next
    	Next
     
    	End Function
    ]
     
    oScript>>Language("VBScript")       // identifier le langage
    oScript>>AddCode(cpSource)       // identifier le code source à exécuter 
    oScript>>Timeout(-1)	      // durée de l'exécution du code
    MesInstances = oScript>>Run("ListeInstancesSQL") //Appel    // exécuter la procédure
     
    // afficher la valeur 
    Info(MesInstances)

    J'obtiens l'erreur suivante:

    Erreur à la ligne 78 du traitement Procédure locale initEcran.
    Vous avez appelé la méthode Automation 'AddCode'.
    En tentant d'invoquer la méthode <AddCode> ou de lire la propriété <AddCode>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 800A0401 : Fin d'instruction attendue'
    En tentant d'invoquer la méthode <AddCode>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 800A0401 : Fin d'instruction attendue'
    En tentant de lire la propriété <AddCode>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 80020003, Le membre demandé n'existe pas'
    En tentant d'écrire la propriété <AddCode>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 80020003, Le membre demandé n'existe pas'

    ----- Informations techniques -----

    Projet : BackupRestoreDB

    Appel WL :
    Traitement de 'Procédure locale initEcran' (FEN_CONNECT.PROCEDURE.initEcran), ligne 78, thread 0

    Que s'est-il passé ?
    Vous avez appelé la méthode Automation 'AddCode'.
    En tentant d'invoquer la méthode <AddCode> ou de lire la propriété <AddCode>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 800A0401 : Fin d'instruction attendue'
    En tentant d'invoquer la méthode <AddCode>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 800A0401 : Fin d'instruction attendue'
    En tentant de lire la propriété <AddCode>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 80020003, Le membre demandé n'existe pas'
    En tentant d'écrire la propriété <AddCode>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
    'Erreur 80020003, Le membre demandé n'existe pas'

    Code erreur : 2205
    Niveau : erreur fatale (EL_FATAL)

    Dump de l'erreur du module 'wd200vm.dll' (20.0.96.3).
    Identifiant des informations détaillées (.err) : 130001
    Informations supplémentaires :
    EIT_PILEWL :
    Procédure locale initEcran (FEN_CONNECT.PROCEDURE.initEcran), ligne 78
    Déclarations globales de FEN_CONNECT (FEN_CONNECT), ligne 3
    EIT_DATEHEURE : 06/05/2015 09:23:48

    Assistance


  9. #9
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Soit, c'est un faux problème. (... c'est quand même celui que vous avez pris soin de nous exposer dans votre premier post : message retour "accès refusé" + pas de fichier créé).

    Ensuite votre "véritable" problème n'a aucun lien avec Windev. C'est un problème lors de l'utilisation des outils fournis avec SQLServer. Je vous conseille vivement de poser votre question dans la section dédiée à SQLServer.

    Sinon voici quelques pistes : votre machine virtuelle n'est pas sur le même domaine que vos postes, votre machine virtuelle n'est pas correctement configurée au niveau réseau, vous n'avez pas correctement installé le composant SQLCMD sur votre VM...

    Mais je n'ai pas de piste qui soit véritablement pertinente... j'avoue !

    Bon courage...
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  10. #10
    Invité
    Invité(e)
    Par défaut
    Vous 2, vous m'aviez plus orienté dans les droits de création de fichier, on a bien vu que l'adresse de départ ne permettait pas cela, mais même sans essayer de le créer, j'ai des choses bizarres qui s'affichent quand je veux voir la liste des instances sur la console.

    Je ne vois pas en quoi le domaine pourrait être une piste, si je ne trouve aucune instance sur le réseau, je devrais pouvoir récupérer celle en local, non?

    Je vois que mon problème n'est pas nouveau, il y a eu un post sur ce sujet, pourtant, au niveau du paramétrage dans SQL Server, les instances ne sont pas cachées.

  11. #11
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2009
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 278
    Points : 2 151
    Points
    2 151
    Par défaut
    Ce ton agressif n'apporte rien à votre propos.

    Je vous invite à relire mon post et à poser votre question au bon endroit. Ici on parle de l'IDE Windev et du WLangage pas des problématiques liées à SQLServer.

    Si vous ne voyez pas en quoi le domaine est une piste, ignorez ma suggestion. Je ne suis ni un expert SQLServer ni un expert réseau.

    Je ne vous répondrez plus car votre attitude me déplaît et plus on avance dans la discussion plus j'ai l'impression que vous ne comprenez pas ce que vous faites...

    Bonne journée,
    SQL : le véritable Esperanto

    "Les patates à ta tata épatent ton tonton mais les pates aux thons à ton tonton épatent pas ta tata." (Michel Souris)

    MERCI DE NE PAS M'ENVOYER DE MESSAGE PRIVE POUR DES QUESTIONS TECHNIQUES SANS MON ACCORD !

  12. #12
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    ton script en vbs ne fonctionne pas car dans le script, l'objet sql n'est pas référencé.

    Tu peux faire l'équivalent en dotnet dans windev en incorporant l'assemblage dotnet System.Data dans ton projet et avec par exemple le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    MonInstance  est un SqlDataSourceEnumerator dynamique = SqlDataSourceEnumerator.Instance
    MaListeSqlServer est un System.Data.DataTable dynamique  = MonInstance.GetDataSources()
    i est un entier = 0
    POUR TOUTE rangée DE MaListeSqlServer.Rows	
       POUR TOUTE Colonne DE MaListeSqlServer.Columns
       	Trace(Colonne.ColumnName," : ",rangée:get_Item(i))
       	i++
       FIN
    FIN
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  13. #13
    Invité
    Invité(e)
    Par défaut
    Il n'y pas grand chose à redire, si ce n'est qu'il faut remettre le compteur i à 0 à chaque nouvelle rangée.
    En tout cas, affaire réglée, merci bien.

    Edit : dans certains cas, l'instruction suivante
    Code WINDEV : Sélectionner tout - Visualiser dans une fenêtre à part
    rangée:get_Item(i)
    Peut renvoyer une exception, disant qu'il n'est pas possible de convertir un objet .NET en chaine, pour cela, il faut ajouter le test suivant :
    Code WINDEV : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Si rangée:IsNull(i) Alors
    //Impossible de récupérer rangée:get_Item(i)
    Sinon
    Info(rangée:get_Item(i))
    Fin
    Dernière modification par Invité ; 07/05/2015 à 10h11.

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

Discussions similaires

  1. [powershell] Lister les instances SQL Server distant
    Par nutopia dans le forum MS SQL Server
    Réponses: 15
    Dernier message: 01/07/2015, 15h20
  2. [2012] Récupérer la liste des instances SQL Server sur le réseau
    Par Invité dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/05/2015, 10h27
  3. Lister les instances SQL Server 2000 d'un serveur
    Par CleeM dans le forum Développement
    Réponses: 11
    Dernier message: 14/06/2012, 11h47
  4. Réponses: 1
    Dernier message: 05/03/2012, 15h20
  5. [C#] Lister les instances SQL Server du reseau
    Par Idredeguerre dans le forum C#
    Réponses: 2
    Dernier message: 09/11/2010, 13h46

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