Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2010, 11h41   #1
Invité régulier
 
Inscription : septembre 2004
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 16
Points : 8
Points : 8
Par défaut Envoi d'une demande par email à un serveur sql server

Bonjour à tous,

Pour faire simple, ça serait vraiment extra si je pouvais envoyer un email à mon serveur sql ou sur une adresse spécifique et ma base SQL SERVER me retournerait un rapport sous forme excel en pièce jointe.

Exemple :
J'envoi un email avec en objet <demande-001> et hop, quelques secondes plus tard, je reçois sur mon email, un fichier excel en pièce jointe avec la liste des articles du client, venant de mon serveur sql.

Merci de votre aide.

A+
Laurent
AITOZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 11h55   #2
Modérateur
 
Homme
Administrateur de base de données
Inscription : août 2007
Messages : 1 158
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Belgique

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : août 2007
Messages : 1 158
Points : 1 617
Points : 1 617
C'est possible, voyez database mail.

A+
Ptit_Dje est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 12h49   #3
Invité régulier
 
Inscription : septembre 2004
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 16
Points : 8
Points : 8
merci de votre réponse rapide.

Je suis entrain de regarder mais je ne trouve rien sur une demande à partir d'un envoi d'email.
Envoyer des rapports à partir d'un trigger ou d'une planification, je sais deja plus ou moins le faire.

Là, ma question est vraiment de savoir comment envoyer une demande par email au serveur et avoir une réponse avec un joli rapport sur mon email en retour ?
AITOZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 14h55   #4
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Il n'est pas possible de configurer un serveur POP depuis SQL SERVER. Il est donc impossible à SQL SERVER de façon autonome d'aller récupérer son courrier sur un serveur email. Mais on peut via un outil externe à SQL SERVER scruter le serveur POP et envoyer une alerte à SQL SERVER qui à son tour peut répondre à la demande.
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 15h06   #5
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Effectivement SQL Server n'a pas une telle fonctionnalité.

Il y avait bien à l'époque de SQL Server 2000 Microsoft English Query qui se basait sur cette idée d'envoyer une demande (sémantique) à SQL Server et SQL Server répondait par un résultat .. mais la fonctionnalité n'a pas été maintenue.

Vous pouvez également utilisé Service broker qui entre dans ce schéma de fonctionnement : J'envoi un message dans une file d'attente et SQL Server traite cette file d'attente ..

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 17h05   #6
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 354
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 354
Points : 9 745
Points : 9 745
Citation:
Envoyé par AITOZ Voir le message
Bonjour à tous,

Pour faire simple, ça serait vraiment extra si je pouvais envoyer un email à mon serveur sql ou sur une adresse spécifique et ma base SQL SERVER me retournerait un rapport sous forme excel en pièce jointe.

Exemple :
J'envoi un email avec en objet <demande-001> et hop, quelques secondes plus tard, je reçois sur mon email, un fichier excel en pièce jointe avec la liste des articles du client, venant de mon serveur sql.
Comme déjà dit par mikedavem et zinzineti, ce n'est pas directement possible. Le plus simple ici est de passer par un composant de workflow avec un flux lancé à la réception d'un mail, qui envoie une requête à Sql Server, recupére le résultat et renvoi le tout dans un mail à l'expéditeur.

La Workflow Fundation de Microsoft peut gérer assez facilement ce genre de chose avec un minimum de programmation.
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 17h29   #7
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Citation:
Comme déjà dit par SqlPro et zinzineti
Où ca SQLpro ?

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2010, 17h36   #8
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 354
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 354
Points : 9 745
Points : 9 745
Citation:
Envoyé par mikedavem Voir le message
Où ca SQLpro ?

++
Toutes mes excuses.

Remplacer SqlPro by mikedavem. J'édite.
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 22h13   #9
Invité régulier
 
Inscription : septembre 2004
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 16
Points : 8
Points : 8
Bonsoir,

Merci à tous pour vos réponses.

Je continu a chercher une solution.
J'ai pourtant eu une piste avec xp_readmail !?
Quand je lis les explications Microsoft, ils ont l'air de dire que c'est possible.
Mais pour le moment je n'ai pas trouvé.

J'ai configuré un compte mail sur sql et je peux envoyer des emails via xp_sendmail.

il y a la table sysmail_mailitems dans msdb qui me va parfaitement pour les éléments envoyés, il me faudrait la même pour les éléments reçu.

Je creuse et je ne lache pas souvent .

A+
AITOZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 22h42   #10
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Effectivement vous avez raison, j'avais oublié cette feature ..
Je ne l'ai jamais testé .. mais apparement vous devez utiliser les procédures suivantes pour pouvoir lire votre email qui doit contenir une requête :

•xp_startmail
•xp_sendmail
•xp_findnextmsg
•xp_readmail
•xp_deletemail
•sp_processmail
•xp_stopmail

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 23h05   #11
Invité régulier
 
Inscription : septembre 2004
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 16
Points : 8
Points : 8
Mon but n'est pas d'envoyer une requête.
Je veux juste utilisé l'objet de l'email.

En gros si j'envoi un email au serveur avec pour objet 778899-01
je veux capter cette demande pour retourner pour le client 778899 le rapport Excel N°01.

Si je capte l'objet de l'email reçu le reste je saurais le faire sans problème.
Mais je ne sais pas capter l'email.

J'ai remarqué un truc. Quand j'envoi un email via sp_sendmail j'ai la trace avec toutes les infos dans sysmail_mailitems. Par contre, je n'ai aucune trace sur le compte outlook dans les éléments envoyés. (compte sur serveur exchange).
Ca veut dire que la gestion même des emails est dans SQL Server ?
Si oui, il doit bien avoir une table quelque part pour stocker les emails reçu ???
AITOZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 23h34   #12
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
L'objet du mail doit être une requete interpretable par le moteur SQL Server.

Les procédures stockées lisent directement les mails depuis votre mailbox

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 23h49   #13
Invité régulier
 
Inscription : septembre 2004
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 16
Points : 8
Points : 8
Je ne suis pas sur de devoir envoyer des requêtes.
Dans la xp_readmail, je peux capter pratiquement tous les élements d'un email (dont l'objet).
Ensuite je peux les manipuler et en faire ce que je veux.

Si je comprend bien il faut dans l'ordre
•xp_startmail --> Démarrer une session mail
•xp_findnextmsg --> scanner les messages ID par ID dans la boite de réception.
•xp_readmail --> Ensuite il faut les lire et récupérer les infos
•xp_deletemail --> Les supprimer si besoin
•xp_stopmail --> et enfin, cloturer la session

Je pense que mon souci n'est dû qu'à un mauvais paramétrage de mes profils et compte utilisateur & mail (parce qu'en plus ils doivent porter les mêmes nom, etc...).
Enfin je suis un peu perdu sur la config propre des comptes.
Je croyais m'en être sorti parce que l'envoi d'email fonctionne nickel !
AITOZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 00h08   #14
Invité régulier
 
Inscription : septembre 2004
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 16
Points : 8
Points : 8
Visiblement il y a déjà eu le même souci que moi.
Et c'est bien un problème de compte.


Citation:
Envoyé par arwen Voir le message
Aprés avoir cherché un peu partout, j'ai trouvé comment faire.
En fait, il fallait déjà installer un client de messagerie sur le serveur SQL (Outlook par exemple) et définir un profil qui soit le même que celui du compte sous lequel sont lancés les services MSSQL.
Ensuite, il fallait configurer SQLMail (définir le même profil).
Les commandes xp_sendmail et le reste fonctionnent bien maintenant.

Pour ceux qui auraient des problèmes sur SQL mail, n'hésitez pas à demander !
AITOZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2010, 07h57   #15
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Citation:
Je ne suis pas sur de devoir envoyer des requêtes.
Vous voulez lui envoyer quoi a SQL Server ? Peut etre que le mot commande conviendrait mieux alors ..

Faites attention cependant car c'est une fonctionnalite qui est appelee a disparaitre

Citation:
Remarque
Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.
++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 18h09   #16
Invité régulier
 
Inscription : septembre 2004
Messages : 16
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 16
Points : 8
Points : 8
Bon j'ai changé d'option.

Finalement j'ai écris un petit script que j'ai collé à une règle dans le outlook du serveur.

Les étapes :
1- Envoyer un email au serveur avec pour object : XXX-01 (xxx = code client - 01 = numéro du rapport que je souhaite avoir en retour).

2- J'ai ajouté une règle Outlook qui à la réception des emails de ce type, lance mon script.

3- Mon script écrit dans une table spécifique de ma base sql server les information de l'email (code client, numéro du rapport demandé, date heure, email de retour pour la réponse.

JE SUIS BLOQUE A CE STADE si quelqu'un peut m'aider pour la suite ?

4- Il ma reste donc à faire un trigger qui lance la procédure stockée et qui récupère les informations dans un fichier excel

5- Pour finir, envoi ce fichier Excel en pièce jointe à la personne qui l'avait demandé.
AITOZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h46.


 
 
 
 
Partenaires

Hébergement Web