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

C# Discussion :

Problème requête entre c# et Sql server


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 29
    Points : 7
    Points
    7
    Par défaut Problème requête entre c# et Sql server
    Bonjour,

    J'ai l'erreur suivante:

    Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans System.Data.dll
    Informations supplémentaires*: Nom d'objet 'dbo.Equipement' non valide.
    Mon code c# est le suivant:
    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
    43
    44
    45
    46
    47
    48
    49
    public static List<EQUIPEMENT> GetEquipements()
            {
                //Connection et ouverture de la connexion à la base
                Connexion();
     
                //Requête
                string sRequet = "SELECT * FROM dbo.Equipement;";
     
                //Instanciation de l'objet command sur bdd avec requete et connexion precedente
                SqlCommand = new OleDbCommand(sRequet, SqlConnection);
     
                //Execution de la requete de lecture avec affectation de SqlReader sur la lecture
                OleDbDataReader SqlReader = SqlCommand.ExecuteReader();         //erreur ici !!!!!
     
                //SqlCommand.ExecuteNonQuery();
     
                List<EQUIPEMENT> res = new List<EQUIPEMENT>();
     
                if (SqlReader != null)
                {
                    //Lecture enregistrement par enregistrement
                    while (SqlReader.Read())
                    {
                        //transfert de l'enregistrement courant dans une classe equipement
                        EQUIPEMENT eq = new EQUIPEMENT();
                        eq.iAdresse_RGS = (int)SqlReader[0];
                        eq.sCE = (string)SqlReader[1];
                        eq.sAutoroute = (string)SqlReader[2];
                        eq.sSens_de_circulation = (string)SqlReader[3];
                        eq.sAdresse_IP = (string)SqlReader[4];
                        eq.iPort = (int)SqlReader[5];
                        eq.sBoucle_Terrain = (string)SqlReader[6];
                        eq.iCoordonnees_X = (int)SqlReader[7];
                        eq.iCoordonnees_Y = (int)SqlReader[8];
                        eq.sNom = (string)SqlReader[9];
                        eq.sConstructeur = (string)SqlReader[10];
                        eq.Position = new System.Drawing.Point(eq.iCoordonnees_X, eq.iCoordonnees_Y);
                        res.Add(eq);
                    }
                }
     
                //Fermeture de la connextion Sql
                SqlConnection.Close();
     
                //Destruction de l'objet de connection Sql
                SqlConnection.Dispose();
     
                return res;
            }
    Pourtant quand je fais cette requête simple sous sql management le résultat est bon!

    Avec pour se connecter le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    static OleDbConnection SqlConnection; //pour se connecter à la bdd
            static string ConnectionString = "Provider=SQLOLEDB;Server=04-xxx-P;Database=PMV SENTINEL SUPERVISEUR;User Id=xxx;Integrated Security=SSPI";
            static string sRequet;
    private static void Connexion()
            {
                SqlConnection = new OleDbConnection(ConnectionString);
                SqlConnection.Open();
            }
    Je passe directement par mon instance sans mot de passe (authentification windows).
    J'ai essayer de me créer un utilisateur, avec authentification SQL Server, rôle: public ... Et côté serveur accepter les connexions, identification windows sql server mais j'ai l'erreur suivante:
    TITRE*: Se connecter au serveur
    ------------------------------

    Impossible de se connecter à 04-xxx-P\SQLEXPRESS.

    ------------------------------
    INFORMATIONS SUPPLÉMENTAIRES*:

    Échec de l'ouverture de session de l'utilisateur*'user'. (Microsoft SQL Server, Erreur*: 18456)

    Pour obtenir de l'aide, cliquez sur*: http://go.microsoft.com/fwlink?ProdN...6&LinkId=20476

    ------------------------------
    BOUTONS*:

    OK
    ------------------------------

    ceci ce produit après connexion à mon instance. Sinon si j'ouvre pour la première fois management, j'ai ceci:
    TITRE*: Se connecter au serveur
    ------------------------------

    Impossible de se connecter à 04-xxx-P\SQLEXPRESS.

    ------------------------------
    INFORMATIONS SUPPLÉMENTAIRES*:

    Échec de l'ouverture de session de l'utilisateur*'user'. (Microsoft SQL Server, Erreur*: 18456)

    Pour obtenir de l'aide, cliquez sur*: http://go.microsoft.com/fwlink?ProdN...6&LinkId=20476

    ------------------------------
    BOUTONS*:

    OK
    ------------------------------
    Au moment ou je vous parle, en modifiant des propriétés liés au serveur, dans l'onglet Autorisation, les choses évoluent, les messages d'erreur ne sont pas les mêmes... mais je ne sais pas trop ou je vais!

    Merci de m'aider!!

    Cordialement,

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 742
    Points
    9 742
    Billets dans le blog
    3
    Par défaut
    Avant toute chose, il faut que tu décides si tu veux utiliser l'authentication Windows (NTLM/Kerberos) ou le mode mixte qui permet de saisir un mot de passe. Si l'on suit les recommandations de sécurité, ce deuxième mode (mixte) ne doit jamais être utilisé, sauf pour des raisons de compatibilités avec de vieilles applications qui ne supportent ni NTLM ni Kerberos.

    Je vais partir du principe que tu veux continuer avec l'authentification Windows.

    Avec l'authentification Windows, on se connecte en utilisant le contexte de sécurité en cours. Il y a 2 scénarios possibles :
    Si tu es connecté à ton PC avec le compte CORP\UtilisateurA, alors tu seras connecté à SQL Server avec ce même compte.
    Par contre si tu veux utiliser un compte de service (CORP\SQL par exemple), alors il faut s'impersonifier : le code s'exécutera alors dans le contexte de sécurité du compte de service (CORP\SQL, et non CORP\UtilisateurA).

    Dans ta connection string on peut voir que tu indiques un User Id, ce qui peut fausser la connexion. As-tu essayé sans ?

    Que se passe-t-il dans ton code ? Est-ce que tu t'impersonifies ou est-ce que tu utilises ton compte utilisateur Windows ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 29
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Quand je met en provider:
    Provider=SQLOLEDB;Server=nomdupc\\SQLEXPRESS
    j'ai l'erreur suivante:

    Une exception non gérée du type 'System.Data.OleDb.OleDbException' s'est produite dans System.Data.dll

    Informations supplémentaires*: Spécification de permission non valide

  4. #4
    Membre régulier Avatar de SultanGeek
    Homme Profil pro
    Ingénieur automatisme & IT
    Inscrit en
    Juin 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur automatisme & IT
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 70
    Points : 91
    Points
    91
    Par défaut
    Bonjour,
    Pour connaitre le string de connexion,essaie de faire comme si tu créais un base dans visual studio,dans le menu du haut données,fait ajouter une nouvelle source de données.Normalement,si tu choisi ta base dans la liste,tu verras le string de connexion

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Février 2015
    Messages : 29
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour vos réponses j'ai en effet résolu mon problème, même si initialement je voulais créer un utilisateur par défaut pour se connecter à la base, je passe directement par mon instance.

    Au niveau de la migration sur le serveur, qui supportera mon application comment faire? faut que je recréer toute mon installation ou puis-je générer un script pour réinjecter serveur, instance et BDD?

    Je précise sous Sql Server 2014 express.

    Cordialement,

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

Discussions similaires

  1. Problème de flottant entre delphi et sql server
    Par zanoubya dans le forum Débuter
    Réponses: 6
    Dernier message: 02/06/2010, 11h36
  2. [WD12] probléme de date entre WD12 et SQL server 2005
    Par Bassemca dans le forum WinDev
    Réponses: 5
    Dernier message: 19/12/2008, 21h27
  3. probléme entrée interface microsoft sql server 2005
    Par ess2007 dans le forum Administration
    Réponses: 2
    Dernier message: 01/07/2008, 17h03
  4. Problème de format entre Windev et SQl Server
    Par rphenix dans le forum WinDev
    Réponses: 7
    Dernier message: 20/06/2007, 09h36
  5. Lien entre oracle et SQL Server 2000
    Par alpachico dans le forum Décisions SGBD
    Réponses: 14
    Dernier message: 15/06/2005, 14h14

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