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 :

Trigger SQL - Base SAGE


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Par défaut Trigger SQL - Base SAGE
    Bonjours,

    J'ai un petit souci avec mon trigger.
    Le logiel SAGE s'appuie sur une base de données SQL serveur. Mon but est de stoker dans une autre base tous les mouvements associé à la base SAGE : Ajout/Modification et suppression.

    1er BASE DE DEPART : Sobac
    2e BASE POUR STOCKER : EchangeSobac

    Pour cela, j'effectue un trigger sur une table 'F_DOCENTETE de la base Sobac ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TRIGGER TG_INS_SIA12 ON [dbo].[F_DOCENTETE] 
    FOR INSERT
    AS 
    INSERT INTO [EchangeSobac]..[T_ECHANGES] (NOM, ORIGINE, DESTINATION, DATE_CREATION )  VALUES ('COMMANDE', 'SAGE', 'PRODALIA', GetDate())
    J'ai donc testé un insert depuis l'analyseur de requete, cela fonctionne.
    Jai testé également depuis une application Windev qui effectue un Insert, cela marche.
    Le probléme s'est que lorsque je vais sur sage pour effectuer mon Insert (en ajoutant un devis) il me met une erreur :
    L'utilisateur de serveur 'SIA\sylvie' n'est pas valide pour la base de données 'EchangeSobac'.
    Pourtant c'est moi meme qui est créer la base 'EchangeSobac'. Donc, je dispose bien des droits [bdo].....

    Autre test effectué : J'ai modifié mon trigger pour qu'il insere dans une table de la 1er Base : Sobac
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TRIGGER TG_INS_SIA12 ON [dbo].[F_DOCENTETE] 
    FOR INSERT
    AS 
    INSERT INTO [dbo].[T_ECHANGES] (NOM, ORIGINE, DESTINATION, DATE_CREATION )  VALUES ('COMMANDE', 'SAGE', 'PRODALIA', GetDate())
    Cela fonctionne trés bien depuis l'interface Sage.

    L'erreur viens donc d'un problème de droit quand on fait un ajout a la base SQL Serveur depuis L'application SAGE....
    Enter la 1er et la 2e Base....
    Si quelqu'un a une idée ???? Merci de m'en faire part car je suis bloqué....

    Ya peut etre un syntaxe particulière a mettre que je ne connais pas.... ????
    Merci...
    Silvia

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    ton problème vient du fait que tu te éxecute ton trigger avec le compte 'SIA\sylvie' => compte windows je suppose

    regarde dans la base SAGE si le user 'SIA\sylvie' est déclaré dans la table sysxlogins (avec le x)

    serge

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Par défaut
    Je ne trouve pas la table : sysxlogins

    Par contre j'ai une table : sysusers ou il y a bien l'utilisateur 'SIA/Sylvie'

  4. #4
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    Es-tu sûre que le user Sylvie est bien créé sur la base EchangeSobac ?

    Regarde aussi deux choses :
    1) si les deux bases n'ont pas le même propriétaire, corrige cela. Le meilleur moyen est d'attribuer 'sa' comme propriétaire des bases :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    USE Sobac
    GO
    EXEC sp_changedbowner 'sa'
    GO
    USE EchangeSobac
    GO
    EXEC sp_changedbowner 'sa'
    2) Si ce n'est pas fait, autorise le "cross database ownership chaining" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC sp_configure 'Cross DB Ownership Chaining', '1'; RECONFIGURE

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 61
    Par défaut
    Salut,

    Sylvia je suis content d'avoir trouver ton post!

    J'ai semble t-il le meme probleme que toi, je dois copier une base SAGE pour pouvoir l'utiliser dans un logiciel de gestion de la relation client (GRC).

    L'insertion dans l'analyseur se fait sans aucun problème tout comme toi, j'arive même à afficher les résultat dans l'interface de la GRC. par contre lorsque j'essai d'accéder aux données, ca plante et j'ai le droit à une erreur;

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    C'est normal, SAGE protège ses bases de données en tant qu'éditeur de façon à interdire l'utilisation intempestive de procédures non prévues.

    Voyez directement avec SAGE, ils proposent une api pour ce faire.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. Lenteur Base SQL-Server Sage
    Par Invité dans le forum MS SQL Server
    Réponses: 19
    Dernier message: 24/01/2014, 07h58
  2. [SQL] Problème de requête d'insertion dans une base SAGE
    Par Swapyyy dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/07/2008, 10h14
  3. Réponses: 2
    Dernier message: 06/03/2008, 14h26
  4. SQL Serveur Trigger - Différente base
    Par Silvia12 dans le forum Développement
    Réponses: 2
    Dernier message: 18/04/2007, 14h34
  5. Attaquer une base externe à partir d'un trigger SQL Server
    Par stephpr44 dans le forum Développement
    Réponses: 5
    Dernier message: 29/10/2005, 15h40

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