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 :

Impossible de trouver la procédure stockée


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut Impossible de trouver la procédure stockée
    quand je tente de supprimer un enregistrement dans une des tables directement à partir de Entreprise Manager, un trigger fait appel à une procédure stockée. j'obtiens le message d'erreur cité dans le sujet.
    si j'ouvre la liste des procédures, la procédure concernée est bien présente !
    comment régler ce problème ?
    _____
    __
    _

    Engi

  2. #2
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    Quel est l'utilisateur SQL a qui appartient la vue ?, si ce n'est pas dbo alors il faut mettre :

    exec utilisateur.nom_procedure pour l'executer depuis le trigger.

    a+
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    en fait, c'est un trigger qui fait le boulot. il appelle une fonction utilisateur:
    dbo.nomfonction

    ensuite, c'est cette fonction utilisateur qui fait appel à la procédure stockée:
    master..xp_nomprocédure
    _____
    __
    _

    Engi

  4. #4
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    C'est bien une procedure stockee etendue que tu execute dans ta fonction ? (c'est les seules autorisees) et si c'est le cas elle ne doit pas renvoyer de resultat sinon tu aura un echec de l'execution de ta fonction.

    a+
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    Voila le code du trigger sur suppression, de la fonction et celui de la procédure :

    TRIGGER :

    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
     
    CREATE TRIGGER TG_CBDEL_F_PAYS ON F_PAYS FOR DELETE WITH APPEND AS 
    	SET NOCOUNT ON
    	IF dbo.CB_FntIsFileLock('F_PAYS',3) = 1 
    	BEGIN 
    		Raiserror(80004,11,1) WITH SETERROR 
    		Rollback Transaction 
    		Return 
    	END 
    	IF dbo.CB_FntIsFileLock('F_PAYS',2) = 1 
    	BEGIN 
    		Raiserror(80002,11,1) WITH SETERROR 
    		Rollback Transaction 
    		Return 
    	END 
    	IF dbo.CB_FntIsFileLock('F_PAYS',0) = 1 
    	BEGIN 
    		Raiserror(80008,11,1) WITH SETERROR 
    		Rollback Transaction 
    		Return 
    	END 
    	IF dbo.CB_FntIsFileLock('F_PAYS',1) = 1 
    	BEGIN 
    		Raiserror(80008,11,1) WITH SETERROR 
    		Rollback Transaction 
    		Return 
    	END 
    	IF EXISTS(SELECT 'a' FROM deleted WHERE dbo.CB_FntIsRecordLock('F_PAYS',cbMarq) = 1)
    	BEGIN 
    		Raiserror(80003,11,1) WITH SETERROR 
    		Rollback Transaction 
    		Return 
    	END
    FONCTION :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    CREATE FUNCTION CB_FntIsFileLock(@cbFile sysname, @cbType smallint) RETURNS int AS 
    BEGIN
    	DECLARE @lBase int
    	DECLARE @lTable int
    	DECLARE @lRes int
     
    	SELECT @lBase = DB_ID()
    	SELECT @lTable = OBJECT_ID(@cbFile)
    	EXECUTE master..xp_CBIsFileLock @@SPID,@lBase,@lTable,@cbType,@lRes OUTPUT
    	RETURN @lRes
    END
    PROCEDURE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE PROCEDURE CB_IsFileLock @cbFile sysname, @cbType smallint, @lRes int OUTPUT AS 
    	DECLARE @lBase int
    	DECLARE @lTable int
    	DECLARE @lErr int
     
    	SET NOCOUNT ON
    	SELECT @lBase = DB_ID()
    	SELECT @lTable = OBJECT_ID(@cbFile)
    	EXECUTE @lErr = master..xp_CBIsFileLock @@SPID,@lBase,@lTable,@cbType,@lRes OUTPUT
    	IF @lErr <> 0
    		RAISERROR(@lErr,11,1) WITH SETERROR
    GO
    _____
    __
    _

    Engi

  6. #6
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    Es tu sur que le proprietaire de xp_CBIsFileLock est DBO ?

    car master..xp_CBIsFileLock indique par defaut que le proprietaire est dbo.

    a+
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  7. #7
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    tous les objets de la base appartiennent à dbo
    _____
    __
    _

    Engi

  8. #8
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Est ce que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE master..xp_CBIsFileLock @@SPID,@lBase,@lTable,@cbType,@lRes OUTPUT
    est l'appel a la procedure dont tu as donne le code (ci dessous)?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE PROCEDURE CB_IsFileLock @cbFile sysname, @cbType smallint, @lRes int OUTPUT AS ...
    Car si c'est le cas :

    1- ce n'est pas une procedure etendue, donc elle ne peux pas etre appelee dans une fonction
    2- si tu veux executer cette procedure il faut l'appeler correctement par son nom !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    exec CB_IsFileLock @@SPID,@lBase,@lTable,@cbType,@lRes OUTPUT
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  9. #9
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    j'avoue que ne comprends pas tout à ce charabia.
    pour tout te dire, il s'agit de la base SQL des produits de gestion SAGE, donc non modifiable sans risquer de créer le bordel.
    petite précision supplémentaire : la base sur laquelle je travaille en local est en fait une copie de la base originale à laquelle je peux accéder à distance. bizarrement, l'erreur décrite ne se produit pas sur l'original.
    je vais donc chercher si l'erreur ne vient d'un problème survenut au cours de la copie.
    merci de ton aide
    _____
    __
    _

    Engi

  10. #10
    Membre averti
    Inscrit en
    Août 2002
    Messages
    354
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 354
    Points : 398
    Points
    398
    Par défaut
    Slt,

    J'ai deja eu a faire a la base SQL Server de SAGE .... as tu installe la partie serveur de celle ci sur ton serveur de dev ?

    Je viens de regarder dans une base sage et je te confirmes que xp_CBIsFileLock est bien installe par la partie serveur de SAGE, peut etre est t'il mal installe sur ton serveur ?

    je viens de tester ta fonction CB_FntIsFileLock, elle fonctionne sans probleme sur un serveur parametre correctement pour la base SAGE.

    a+
    One ring to rule them all,
    One ring to find them,
    One ring to bring them all
    And in the darkness bind them.

  11. #11
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    non, effectivement, je n'ai pas installé la partie serveur.
    je vais m'empresser de le faire.
    _____
    __
    _

    Engi

  12. #12
    Membre régulier
    Inscrit en
    Avril 2004
    Messages
    249
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Avril 2004
    Messages : 249
    Points : 112
    Points
    112
    Par défaut
    ça fonctionne maintenant;
    merci gandalf
    _____
    __
    _

    Engi

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

Discussions similaires

  1. Impossible d'exécuter la procédure stockée
    Par daydream123 dans le forum JDBC
    Réponses: 5
    Dernier message: 25/09/2012, 17h32
  2. Impossible de créer une procédure stockée sur MySQL: 5.0.38
    Par donbrico dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 19/11/2008, 18h30
  3. Impossible de creer une Procédure Stockée
    Par freud dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 15/07/2007, 19h48
  4. Réponses: 6
    Dernier message: 31/10/2006, 14h42
  5. Impossible de trouver la procédure stockée
    Par yann47 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/02/2005, 22h47

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