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

PHP & Base de données Discussion :

php - sqlsrv : set identity_insert [SQL-Server]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Développeur
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Par défaut php - sqlsrv : set identity_insert
    Bonjour,

    Je travaille actuellement sur une application web PHP - SQL Server.
    J'utilise le driver sqlsrv (sqlsrv_connect, sqlsrv_query...) pour faire mes requetes sur ma base de données.

    Mon problème est le suivant : je me retrouve dans l'obligation de faire un INSERT sur un champs ayant un "Identity Specification".
    J'ai essayé en ajoutant l'instruction "SET IDENTITY_INSERT tableName ON" avant ma requête, mais il semblerait que cela ne fonctionne pas avec sqlsrv_query.

    Voici un exemple de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $sql = "
    	SET IDENTITY_INSERT table_test ON
    	INSERT INTO table_test (id, test)	-- Le champs id est en Identity Specification
    	VALUES (42, 'test')
    	SET IDENTITY_INSERT table_test OFF
    ";
     
    sqlsrv_query($connexion, $sql);
    J'ai essayé la même requête (au caractère près) en utilisant le driver mssql (mssql_connect, mssql_query...), ça marche, mais on m'impose l'utilisation de sqlsrv.

    Quelqu'un aurait-il une solution?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu obtiens une erreur ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Profil pro
    Développeur
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Par défaut
    Non ça ne m'affiche absolument aucune erreur, rien non plus dans la log d'erreur de php...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu as bien utilisé sqlsrv_errors() ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Profil pro
    Développeur
    Inscrit en
    Décembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Décembre 2012
    Messages : 7
    Par défaut
    Vous allez me trouver bête, je ne connaissais pas cette commande... Je travaille sur sql server depuis peu :/

    Effectivement, il y a une erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    array
      0 => 
        array
          0 => string '42000' (length=5)
          'SQLSTATE' => string '42000' (length=5)
          1 => int 1088
          'code' => int 1088
          2 => string '[Microsoft][SQL Server Native Client 10.0][SQL Server]L'objet "table_test" est introuvable, car il n'existe pas ou vous ne disposez pas des autorisations requises.' (length=163)
          'message' => string '[Microsoft][SQL Server Native Client 10.0][SQL Server]L'objet "table_test" est introuvable, car il n'existe pas ou vous ne disposez pas des autorisations requises.' (length=163)
    Pourtant ma table existe, et il semble que j'ai les autorisations dessus puisque la requête fonctionne sans les SET IDENTITY_INSERT
    Faut-il une autorisation supplémentaire pour cette commande?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut peut être une désignation complète du genre
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SET IDENTITY_INSERT dbo.table_test ON  ...
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 20/06/2012, 13h07
  2. SET IDENTITY_INSERT sur une base en exploitation ?
    Par azur668 dans le forum Développement
    Réponses: 2
    Dernier message: 21/07/2009, 15h29
  3. [DEBUTANT] Attribution de droit pour SET IDENTITY_INSERT
    Par duc@ti dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/01/2008, 11h23
  4. SET IDENTITY_INSERT ON/OFF sous Oracle 10g ?
    Par Najdar dans le forum Oracle
    Réponses: 1
    Dernier message: 31/08/2006, 15h05
  5. UPDATE * SET php/mysql
    Par Invité dans le forum Requêtes
    Réponses: 13
    Dernier message: 28/03/2006, 11h47

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