Comment enregistrer une image à partir de SQL Server dans un fichier à l'aide de SQL
Question
Dans SQL Server 2005, j'ai un tableau avec des images (type de données: à l'image). À l'aide de SQL, comment puis-je enregistrer une image dans un fichier (sur le même serveur qui exécute SQL Server). Si je dois le faire, je vais utiliser SQL CLR, mais je veux éviter si possible.
Fond
Je veux un travail SQL Server pour exécuter les pas d'un calendrier qui appelle un proc qui va envoyer des e-mails avec des images incorporées à l'aide de SQL Serveur de Messagerie de Base de données comme ceci:
exec msdb.dbo.sp_send_dbmail
@profile_name = 'MyProfile',
@recipients = '[email protected]',
@subject = 'hello',
@file_attachments = 'C:\MyLogo.gif',
@body=N'<p>Image Test</p><img src="MyLogo.gif" /><p>See image there?</p>',
@body_format = 'HTML';
Que SQL fonctionne, mais j'ai besoin de pour obtenir l'image enregistrée dans un fichier en premier. Si je peux obtenir de l'image directement sur l'e-mail sans l'enregistrer dans un fichier, c'est bien, mais il doit être intégré à l'email et je veux seulement utiliser SQL.
Pas de. Un travail SQL Server va exec un proc qui va (je l'espère) envoyer l'e-mail intégré à l'image. Donc, pas d'autres langues, à moins que je n'ai pas le choix.
Vous pouvez essayer à la sortie de la colonne binaire de fichier avec xp_cmdshell comme ceci: EXEC master..xp_cmdshell'bcp "SÉLECTIONNER une image à PARTIR EmailTable" queryout "c:\mylogo.gif"'
possible dupe - stackoverflow.com/questions/35974/...
OriginalL'auteur Craig HB | 2009-11-04
Vous devez vous connecter pour publier un commentaire.
J'ai essayé d'utiliser le @attach_query_result_as_file option, mais il n'y a aucun moyen pour que cette requête écrite en binaire que je peux me rendre au travail. Donc, la prochaine option serait d'utiliser bcp pour un fichier temporaire, puis joignez le fichier.
La bcpFormat.fmt devrait ressembler à ceci:
Qui va attacher une image à partir de votre base de données à l'e-mail sous forme de fichier. Il persiste à ne pas le montrer "inline", car ce serait prendre un peu plus de travail de mime coder l'image dans le corps de l'e-mail et la référence de votre code html. Vous aussi, vous avez besoin de générer des noms uniques pour vos fichiers et de nettoyage ainsi que de multiples processus ne seront pas les uns sur les autres.
OriginalL'auteur duckworth
Cet article explique comment vous pouvez utiliser SQL Server OLE automation stockées procs (qui vous permettent de créer et d'utiliser des COM objets par le biais de T-SQL) pour créer un fichier.
OriginalL'auteur kristian
Est un SQL CLR (.NET) procédure stockée une possibilité? Que n'aurais aucun problème à l'enregistrement des données à partir d'un champ blob dans un fichier temporaire sur le disque.
OriginalL'auteur David
Je pense que madC commentaire est la meilleure solution.
Vous pouvez également essayer d'utiliser quelque chose comme ceci :
INSÉRER DANS LA FONCTION OPENROWSET ("EN VRAC", ", BULK_BLOB ) ...
mais de mon côté il nécessaire les étapes supplémentaires suivantes:
Et après cela, le résultat de l'INSERTION a été:
Peut-être que vous serez en mesure de trouver l'idée pour le faire fonctionner.
OriginalL'auteur Pavlo Svirin