[TRIGGER MULTIBASE] Problème connu des développeurs?

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

[TRIGGER MULTIBASE] Problème connu des développeurs?

de Le_Maraudeur » Lun 23 Juil 2007 17:54

Bonjour,

je suis en train de m'arracher les cheveux sur un trigger en Update qui est censé modifier des données dans une table d'une autre base située sur le même serveur, cependant, malgré une syntaxe correcte et plusieurs tentatives différentes, je ne trouve pas de solution.

J'ai trouvé sur un autre forum une personne avec exactement le même problème, mais sans solution réelle autre que passer par une table créée dans la base Sage, ce qui n'est pas une solution pour mon cas.

Voici le problème exposé (le mien est identique en tous points, il y a juste à modifier les noms de bases, tables, et users)

Est-ce que quelqu'un ici à déjà rencontré ce problème et quelle solution mettre en place (personnellement je pense à un batch quotidien qui check une table intermédiaire et qui fait du requêtage direct, puisque c'est à première vue la seule chose qui fonctionne dans tous les cas...)

Silvia12 sur le forum des développeurs a écrit: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: Tout sélectionner
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: Tout sélectionner
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


voici également le lien vers le sujet:

http://www.developpez.net/forums/showthread.php?t=322495&highlight=trigger

Pour ma part, j'ai vérifié 15 fois tous les droits possibles et imaginables sur SQL Server, et tout est ok. J'ai également changé les dbowner des bases mais rien n'y fait.
Lorsque je fais une transformation de BC en Facture dans l'application Sage, j'ai systématiquement un message d'erreur sur l'utilisateur NT qui utilise Sage disant qu'il est invalide sur l'autre base (non Sage).

Merci pour votre aide d'avance.
Super Contributeur
Super Contributeur
 
Messages: 129
Inscription: Jeu 12 Juil 2007 10:39

de Heidy » Lun 22 Oct 2007 10:48

Bonjour,
ci-après un copier/coller de la base de connaissance SAGE
Je suis surpris par ce fonctionnement mais c'est comme çà !


Fiche N° KB29778 (dernière modification : 06/09/2007)

Depuis les versions 14, des modifications ont été apportées à la gestion des droits dans les applications Ligne 100 pour SQL Server.

....

Particularité des traitements inter-bases :
Pour que des triggers inter-bases puissent être exécutés à partir des applications Ligne 100 pour SQL Server, il est préalablement nécessaire de donner les droits à l'utilisateur guest sur la base de données cible.

Exemple :
Si un trigger doit transférer des données tiers de la base bijou vers la base bijou2, il est nécessaire de donner les droits d'accès en lecture et écriture à l'utilisateur guest sur la table F_COMPTET de la base BIJOU en lançant les commandes suivantes depuis l'analyseur de requêtes :

use bijou2

go

EXECUTE sp_grantdbaccess guest

go

GRANT SELECT,UPDATE ON F_COMPTET TO guest
Heidy
Avatar de l’utilisateur
Posteur néophyte
Posteur néophyte
 
Messages: 6
Inscription: Ven 19 Oct 2007 11:21
Localisation: ROUEN

de Le_Maraudeur » Mar 23 Oct 2007 10:26

Oui je confirme,

j'ai eu la réponse il y a un certain temps déjà, mais j'ai complètement oublié de la faire partager ici...

Désolé.
Super Contributeur
Super Contributeur
 
Messages: 129
Inscription: Jeu 12 Juil 2007 10:39

de Le_Maraudeur » Mar 23 Oct 2007 10:39

J'ajouterai même que d'un point de vue de la sécurité ce n'est pas ce qu'il se fait de mieux je trouve...

Enfin bon... :roll:
Super Contributeur
Super Contributeur
 
Messages: 129
Inscription: Jeu 12 Juil 2007 10:39


Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité