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 :

Problème d'exécution d'une requête mssql depuis une page PHP


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 19
    Points
    19
    Par défaut Problème d'exécution d'une requête mssql depuis une page PHP
    Bonjour,

    j'ai une requête à exécuter depuis une page PHP : UPDATE table SET Excluded = 'True'

    Cette requête s'éxecute correctement depuis Microsoft SQL Server Management Studio.

    Par contre, quand je l'execute depuis ma page, j'ai cette erreur :

    Warning: mssql_query() [function.mssql-query]: message: UPDATE failed because the following SET options have incorrect settings: 'ANSI_NULLS, QUOTED_IDENTIFIER, CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or query notifications and/or xml data type methods. (severity 16)
    Pouvez-vous m'aider ?

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Quel est le type exact de votre champ Excluded ?

    Si celui-ci est un champ de type BIT essayez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE table SET Excluded = 0
    ++

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Tous les essais suivant affiche la même erreur:


    UPDATE TABLE SET EXCLUDED = 0

    UPDATE TABLE SET EXCLUDED = '0'

    UPDATE TABLE SET EXCLUDED = true

    UPDATE TABLE SET EXCLUDED = 'true'
    Sinon il s'agit bien d'un champ de type BIT.

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    N'existe pas une vue indexée qui fait référence à votre table ?

    Si c'est le cas vous allez devoir paramétrer correctement les options suivantes à ON :

    ANSI_NULL
    ANSI_PADDING
    ANSI_WARNINGS
    ARITHABORT
    CONCAT_NULL_YIELDS_NULL
    QUATED_IDENTIFIERS


    ++

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Oui, il y a bien une vue indexée qui fait référence à ma requête, par contre puis-je savoir où paramétrer ces options?

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Vous devez vous assurer que les options de session cités ci-dessus soient initialisés correctement.

    Incorporez ces options dans votre code PHP avant de lancer la requête de mise à jour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SET ANSI_NULLS ON 
    SET ANSI_PADDING ON 
    SET ANSI_WARNINGS ON 
    SET ARITHABORT ON 
    SET CONCAT_NULL_YIELDS_NULL ON 
    SET QUOTED_IDENTIFIER ON 
    SET NUMERIC_ROUNDABORT OFF
     
    UPDATE TABLE maTable 
    SET Excluded = 0
    ++

  7. #7
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Si vous êtes sous SQL Server 2005 ou 2008, exécutez la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT is_ansi_null_default_on,
    		is_ansi_nulls_on,
    		is_ansi_padding_on,
    		is_ansi_warnings_on,
    		is_arithabort_on,
    		is_concat_null_yields_null_on,
    		is_numeric_roundabort_on,
    		is_quoted_identifier_on
    FROM sys.databases
    WHERE name = 'maBD'
    Pour savoir si les options de base de données sont convenablement paramétrées (toutes les colonnes doivent contenir une ligne de 0)

    Le cas échéant, pour les passer à 0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ALTER DATABASE maBD SET ANSI_NULLS OFF
    ALTER DATABASE maBD SET ANSI_PADDING OFF
    ALTER DATABASE maBD SET ANSI_WARNINGS OFF
    ALTER DATABASE maBD SET ARITHABORT OFF
    ALTER DATABASE maBD SET CONCAT_NULL_YIELDS_NULL OFF
    ALTER DATABASE maBD SET NUMERIC_ROUNDABORT OFF
    ALTER DATABASE maBD SET QUOTED_IDENTIFIER OFF
    Si tel n'est pas le cas, c'est peut-être que vous devez paramétrer le driver de Php

    @++

Discussions similaires

  1. [MySQL] Problème boutons générés par une requête éxécutant chacun une requête
    Par terminathan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/12/2009, 16h48
  2. Réponses: 1
    Dernier message: 05/11/2008, 12h04
  3. [SQL] Construction d'une requête à partir d'une requête
    Par Pgs dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/09/2007, 15h24
  4. Ouvrir une requête QBE depuis une méthode pushbutton
    Par Astéroïde dans le forum Paradox
    Réponses: 2
    Dernier message: 23/07/2007, 16h22
  5. [Requête] Utilisation d'une fonction perso dans une requête
    Par Julien Dufour dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 16/03/2007, 09h53

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