में varbinary के रूप में संग्रहीत फ़ाइलों को संलग्न करता है। मेरे पास sp_send_dbmail का उपयोग करके संलग्नक के रूप में क्वेरी परिणाम भेजने से संबंधित दो भाग प्रश्न हैं।sp_send_dbmail डेटाबेस
समस्या 1: केवल मूल .txt फ़ाइलें खुल जाएंगी। कोई अन्य प्रारूप जैसे .pdf या .jpg दूषित हैं।
समस्या 2: एकाधिक अनुलग्नक भेजने का प्रयास करते समय, मुझे एक फ़ाइल मिलती है जिसमें सभी फ़ाइल नाम एक साथ चिपके रहते हैं।
मैं SQL सर्वर 2005 चल रहा हूँ और मैं एक मेज अपलोड किए गए दस्तावेज़ भंडारण है:
CREATE TABLE [dbo].[EmailAttachment](
[EmailAttachmentID] [int] IDENTITY(1,1) NOT NULL,
[MassEmailID] [int] NULL, -- foreign key
[FileData] [varbinary](max) NOT NULL,
[FileName] [varchar](100) NOT NULL,
[MimeType] [varchar](100) NOT NULL
मैं भी मानक ईमेल सामान के साथ एक MassEmail तालिका है। एसक्यूएल भेजें मेल स्क्रिप्ट यहां है। संक्षिप्तता के लिए, मैंने बयान घोषित कर दिया है।
while ((select count(MassEmailID) from MassEmail where status = 20)>0)
begin
select @MassEmailID = Min(MassEmailID) from MassEmail where status = 20
select @Subject = [Subject] from MassEmail where MassEmailID = @MassEmailID
select @Body = Body from MassEmail where MassEmailID = @MassEmailID
set @query = 'set nocount on; select cast(FileData as varchar(max)) from Mydatabase.dbo.EmailAttachment where MassEmailID = '+ CAST(@MassEmailID as varchar(100))
select @filename = ''
select @filename = COALESCE(@filename+ ',', '') +FileName from EmailAttachment where MassEmailID = @MassEmailID
exec msdb.dbo.sp_send_dbmail
@profile_name = 'MASS_EMAIL',
@recipients = '[email protected]',
@subject = @Subject,
@body [email protected],
@body_format ='HTML',
@query = @query,
@query_attachment_filename = @filename,
@attach_query_result_as_file = 1,
@query_result_separator = '; ',
@query_no_truncate = 1,
@query_result_header = 0;
update MassEmailset status= 30,SendDate = GetDate() where MassEmailID = @MassEmailID
end
मैं डेटाबेस से फ़ाइलों को सफलतापूर्वक पढ़ने में सक्षम हूं इसलिए मुझे पता है कि बाइनरी डेटा दूषित नहीं है।
.txt फ़ाइलें केवल तब पढ़ती हैं जब मैंने FilaData को वर्चर में डाला था। लेकिन स्पष्ट रूप से मूल शीर्षलेख खो गए हैं। यह ध्यान देने योग्य भी है कि अटैचमेंट फ़ाइल आकार मूल फ़ाइलों से अलग हैं। यह अनुचित एन्कोडिंग के कारण भी सबसे अधिक संभावना है। तो मुझे आशा है कि संग्रहीत मिमटाइप का उपयोग करके फाइल हेडर बनाने का कोई तरीका है, या बाइनरी डेटा में फ़ाइल हेडर शामिल करने का कोई तरीका है?
मुझे पिछले कुछ मानकों के मूल्यों में भी भरोसा नहीं है, और मुझे पता है कि कोलेसस बिल्कुल सही नहीं है, क्योंकि यह पहले फ़ाइल नाम को अल्पविराम से प्रीपेड करता है। लेकिन अच्छा दस्तावेज खोजने के लिए लगभग असंभव है। कृपया सहायता कीजिए!
आपकी प्रतिक्रिया के लिए धन्यवाद। ऐसा लगता है कि यह काम कर सकता है, लेकिन सुरक्षा प्रतिबंध xp_cmdshell को चलाने से मना करते हैं, खासकर उपयोगकर्ता अपलोड की गई फ़ाइलों के साथ। ऐसा लगता है कि मुझे एक अलग दृष्टिकोण लेना होगा। –
इस मुद्दे पर कोई भाग्य। –