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

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    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 éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Points : 923
    Points
    923
    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
    Errare humanum est, perseverare diabolicum (Sénèque)

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    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
    Expert confirmé
    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
    Points : 4 043
    Points
    4 043
    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
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 61
    Points : 32
    Points
    32
    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 761
    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 761
    Points : 52 544
    Points
    52 544
    Billets dans le blog
    5
    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/ * * * * *

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 61
    Points : 32
    Points
    32
    Par défaut
    SAGE peut protéger ces bases de données pour l'ecriture mais pour la lecture ca devrait etre possible non?
    Sachant que pour ma part je n'ecris jamais dans la base sage je me contente de répercuter les modifications que l'on pourrait eventuellemnt faire dans Sage sur ma nouvelle base de données CRM 3.0.
    Je chreche le problème sans résultat.
    Je ne sais pas si c'es un problème de cohérence de données ou un problème de droits.

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 111
    Points : 59
    Points
    59
    Par défaut
    Salut,

    Je suis en phase de test pour ne pas sortir de la base sage.
    J'effectue donc un trigger sur une table que j'ai créer dans la base de SAGE.
    Ainsi ce trigger fonction lors de l'ajout de devis dans l'interface SAGE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TRIGGER TG_ENT_INS_SIA12 ON [dbo].[F_DOCENTETE] 
    FOR INSERT
    AS 
    INSERT INTO [T_ECHANGES] (NOM, ORIGINE, DESTINATION, DATE_CREATION )  VALUES ('COMMANDE', 'SAGE', 'PRODALIA', GetDate())
    Donc, je pense que c'est bien un blocage au niveau du changement de base....
    Par contre l'insert dans l'autre sens (en supprimant le trigger de F_DOCENTETE pour eviter une boucle infini)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE TRIGGER TG_ECH_INS_SIA12 ON [dbo].[T_ECHANGES] 
    FOR INSERT
    AS 
    INSERT INTO [F_DOCENTETE] (DO_Domaine, DO_Type, DO_Piece, DO_Date, DO_Tiers, RE_No, CA_Num)  VALUES ( 0, 1, 'F259990', '26/03/2007', 'ROULET02', 42, '7010232')
    Ce trigger ne fonctionne pas, je vais voir si c'est une erreur de syntaxe ou koi...
    Il me met une erreur :
    INSERT a échoué car les oprions SET suivantes comportent des paramètres incorrects : 'QUOTED_IDENTIFIER'...
    Donc, il me faut étudier plus en détail cette erreur...

    Enfin, bon, voila...

  9. #9
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    je recontre le même problème que vous, sauf que j'aimerais savoir s'il existe une solution ou pas à ce problème (ce qui ne semble pas être le cas...)

    Merci de votre réponse...

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Décembre 2007
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Solution au Probleme d'ecriture d'une base SAGE vers autre base (via trigger)
    Salut a tous..

    J'ai trouvé la solution au probleme sur la base de connaissance SAGE.
    Il faut declarer la connexion "guest" sur la base de données cible et lui attribuer des droits specifiques en lecture, ecriture sur la table ou vous voulez integrer les données.
    Voici les commandes à effectuer pour cela sur la base de donnees cible :

    -----
    use "Base Donnees cible"
    execute sp_grantdbaccess guest
    go

    grant select, update on "table base cible" to guest
    go
    ------

    et ca marche....
    A bientot
    RV

Discussions similaires

  1. Lenteur Base SQL-Server Sage
    Par Andrian 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