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

MS SQL Server Discussion :

Nom de la machine cliente


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    Par défaut Nom de la machine cliente
    Bonjour,

    J'exécute une procédure stockée depuis une application ecrite ac VC++.
    Je voudrais que cette procédure stockée récupère le nom de la machine à partir de laquelle l'application est exécutée.
    Pour cela j'ai essayé d'utiliser la fonction transact-sql "host_name()", de la même manière qu'on exécute "user" pour récupérer le nom d'utilisateur et ce de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    create procedure maproc ....
    as
       declare @client nvarchar(50)
       set @client=(select host_name())
       insert into table(.....) values('..... @client)
    et je me retrouve avec un blanc dans le champ où je voudrais voir apparaître le nom de la machine cliente.
    Quand je l'utilise depuis l'analyseur de requête, en revanche, ça fonctionne bien; est-ce que cette fonction ne marcherai pas que depuis le serveur ?
    Si oui, existe-t-il un autre moyen de récupérer le nom de la machine cliente ?

    Merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 922
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 922
    Points : 51 717
    Points
    51 717
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT hostname
    FROM   master.dbo.sysprocesses
    WHERE  spid = @@SPID
    A +

  3. #3
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    On n'a pas vraiment besoin d'une variable local,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Insert into t_table
    select host_name()
    Je vous recommande créer une valeur par défaut pour ce faire.
    Dès lors, la valeur est généré automatiquement par le système.

    Merci.

  4. #4
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    Quelle est la différence entre les deux ?

    J'ai essayé ce que dit Laurent WOLO:
    Quand j'éxecute ma proc stockée avec l'anlyseur de requête, ça me récupère bien le nom de la machine et me l'insère bien dans la table que je veux.
    En revanche, quand j'exécute la proc depuis une appli ( qui tourne actuellement sur le serveur ), ça me met un champ blanc dans ma table - J'en déduit que depuis l'appli, le nom de la machine n'a pas pu être récupéré ?
    Est-ce que cette manip n'est utilisable que depuis l'analyseur de requête ?

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Montre la chaine de connexion de ton application.
    C'est quel language de programmation

  6. #6
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    Par défaut
    Je ne vois pas ce que tu veux dire par chaine de connexion.
    C'est un lien ODBC. Je suppose que tu veux dire un truc du style
    - maBase->Connect("nomLienOdbc",user="titi",mdp="toto"); -, non?
    Langage de programmation: C ApiWin32.
    fonction utilisé SQLConnect( ).
    Le lien odbc est crée pdt l'exécution de l'appli en tapant directement dans la base de registre sur la clef HKEY_CURRENT_USER, pour eviter d'avoir à configurer le lien sur tous les postes où l'appli est suceptible d'être utilisée.

    A+.

  7. #7
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Bonjour,

    Evidement, je voulais que tu ajoutes le nom de la machine, mais ce n'est pas pratique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maBase->Connect("nomLienOdbc",user="titi",mdp="toto",hostname="NomDeLaMachine");

  8. #8
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    256
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 256
    Points : 96
    Points
    96
    Par défaut
    salut,

    En fait, je sais pas si je me suis bien expliqué:
    quand je parle de récupérer le nom de la machine, je ne veux pas récupérer le nom du serveur sur lequel est hébergé la base, mais bien le nom de la machine qui exécute l'application et qui peut se trouver à 80 km du serveur....

    voilà, A+.

  9. #9
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    J'avais déjà compris ton problème.
    Je suis entrain de réfléchir si ce n'est pas ton pilote qui est problématique.
    En fait, c'est comme cela que je procède.
    As-tu déjà essayé avec les valeurs par défaut ?

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/11/2008, 15h37
  2. Nom Machine Cliente
    Par Cocci_Mix dans le forum ASP.NET
    Réponses: 6
    Dernier message: 22/09/2007, 15h01
  3. Réponses: 2
    Dernier message: 15/01/2007, 15h32
  4. [C#.Net] Comment obtenir le nom de la machine client ?
    Par Gat- dans le forum Accès aux données
    Réponses: 1
    Dernier message: 12/01/2007, 16h16
  5. Récupérer le nom de la machine locale
    Par Jflgb dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/05/2003, 10h25

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