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 :

Requete DELETE qui ne retourne pas de résultat


Sujet :

Développement SQL Server

  1. #1
    Membre actif Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Points : 237
    Points
    237
    Par défaut Requete DELETE qui ne retourne pas de résultat
    Bonjour le forum,

    Je commence à peine à travailler sur SQL Server 2008.

    J'ai créé un BD dans laquelle j'ai 2 tables identiques. Sur Management STUDIO, lorsque j'éxecute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select * from [maBD].dbo.[maTable] where [monChamp]='24/09/2012'
    la requête me retourne les lignes correspondantes et si je fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Delete from [maBD].dbo.[maTable] where [monChamp]='24/09/2012'
    la suppression est instantanée.

    Par contre, sur ma seconde table (qui est un copie conforme) la requête "SELECT" me remonte des lignes et la requête "DELETE" tourne sans ne rien supprimer (arrêt manuel) et sans message d'erreur.

    Quelqu'un a t-il déjà rencontré ce type de fonctionnement?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut
    Il semble qu'il y ait un lock sur au moins une partie de la table.

    Selon le niveau de lock, il n'empêche pas forcément les SELECT, mais bloquera les modification.

    SQL Server met donc en attente la requête en attendant que le verrou soit levé.

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 421
    Points
    7 421
    Billets dans le blog
    1
    Par défaut
    PS : Saisissez plutôt votre date sous la forme ISO : "yyyy-mm-dd". Car là, si demain un américain lance la requête, il va avoir des surprises.

  4. #4
    Membre averti
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : R&D

    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 406
    Points
    406
    Par défaut
    Fait l'attention sur le format des dates.
    Quel est le résultat de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM [maBD].dbo.[maTable] OUTPUT deleted.* WHERE [monChamp]='20120924'

  5. #5
    Membre actif Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Points : 237
    Points
    237
    Par défaut
    Bonjour le Forum,

    Quand je demande la date au format américain, SQL Server me retourne une erreur.

    En ce qui concerne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE FROM [maBD].dbo.[maTable] OUTPUT deleted.* WHERE [monChamp]='20120924'
    SQL Server me retourne une erreur .
    Syntaxe incorrecte vers 'deleted'.
    Où puis-je trouver les locks? il ne semble pas en avoir déterminé.

    Encore merci à vous 2

  6. #6
    Membre averti
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : R&D

    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 406
    Points
    406
    Par défaut
    Citation Envoyé par Duddy Voir le message
    SQL Server me retourne une erreur .
    Syntaxe incorrecte vers 'deleted'.
    Apriori, tu utilise la BDD au niveau de compatibilté 2000/2005 sous SQL Server 2008. Il y a des raisons ?

    Pour vérifier

    Citation Envoyé par Duddy Voir le message
    Où puis-je trouver les locks? il ne semble pas en avoir déterminé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM sys.dm_tran_locks WHERE resource_database_id = db_id('maBD')
    Mais le verrouillage (lock) ramène l’attente d’exécution, et si ton DELETE passe vite sans supprimer les lignes il s'agit d'autre pb.

  7. #7
    Membre actif Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Points : 237
    Points
    237
    Par défaut
    Bonjour Serguei_TARASSOV,

    Pour la version, j'ai installé la version 2008 directement je n'ai touché à rien, et comme je ne connais pas cela ne me parle pas du tout.

    Pour la première requete, voici le retour de status
    Status=ONLINE, Updateability=READ_WRITE, UserAccess=MULTI_USER, Recovery=SIMPLE, Version=655, Collation=French_CI_AS, SQLSortOrder=0, IsAutoCreateStatistics, IsAutoUpdateStatistics, IsFullTextEnabled
    Pour la 2eme requête, elle remonte 5 lignes.

    Non, rien ne se passe. Le curseur tourne et le temps défile sans action, à priorio la BDD attend une action, mais pourquoi sur une table et pas l'autre?

  8. #8
    Membre averti
    Homme Profil pro
    R&D
    Inscrit en
    Avril 2004
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : R&D

    Informations forums :
    Inscription : Avril 2004
    Messages : 127
    Points : 406
    Points
    406
    Par défaut
    Duddy,

    Il est difficile de trouver des verrouillages à distance...
    Essais cela :
    1. Voir l'object ID da ta table (SELECT object_id('maBD.dbo.MaTable')
    2. Rajouter SELECT @@spid avant DELETE puis lancer tous cela
    3. Dans un autre connexion voir les verrouillages correspondants à ta table .
    Normalement, tu doit voir 2 verrouillages au moins dont l'un corresponde à SPID (ID de connexion) de DELETE

  9. #9
    Membre actif Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Points : 237
    Points
    237
    Par défaut
    Bonjour Serguei_TARASSOV,

    Malgré tes explications, je n'ai pas réussi à trouver.

    Donc, pour contourner, j'ai, avec l'aide d'un collègue, dupliquer la table qui ne présente pas de problèmes et transférer les données de la table "contrariée" vers la nouvelle.

    Encore merci.

    NB: vu mes compétences, il est clair que je reviendrai vers le forum très vite

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

Discussions similaires

  1. Requete qui ne renvoie pas de résultat
    Par bruno782 dans le forum Requêtes
    Réponses: 6
    Dernier message: 01/08/2019, 13h39
  2. [PDO] Une requête qui ne retourne pas de résultat
    Par beegees dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 25/11/2011, 18h18
  3. requete SQL incomplète qui ne renvoie pas le résultat attendu
    Par ballantine's dans le forum Langage SQL
    Réponses: 14
    Dernier message: 07/10/2010, 07h23
  4. Requete SQL qui ne retourne rien alors que ma table n est pas vide
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/06/2009, 19h16
  5. [VB.NET] DataSet qui ne retourne pas de résultat
    Par Lois dans le forum Windows Forms
    Réponses: 4
    Dernier message: 02/06/2004, 17h07

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