sp_send_dbmail সঞ্চিত প্রক্রিয়া সংযুক্তি সহ প্রেরণ করুন


13

আমার এক গ্রাহকের জন্য আমাকে একটি ছোট মাসিক প্রতিবেদন পাঠানোর দায়িত্ব দেওয়া হয়েছে। রিপোর্টটি আগে ম্যানুয়ালি চালিত হয়েছিল উদাহরণস্বরূপ, আউটপুটটি একটি স্প্রেডশীটে অনুলিপি করা হয়েছে এবং সংযুক্তি হিসাবে গ্রাহকের কাছে প্রেরণ করা হবে।

আমি আরও স্থায়ী সমাধানের সন্ধান করছি, সুতরাং sp_send_dbmailকোয়েরি চালাতে এবং এটি সংযুক্তি হিসাবে প্রেরণে সঞ্চিত প্রক্রিয়াটি ব্যবহার করার বিষয়ে আমি ইচ্ছা করি ।

সবকিছু কাজ করে তবে বার্তার বিন্যাসকরণ। প্রাথমিকভাবে আমি আউটপুটটি একটি সিএসভি ফাইল হিসাবে সংযুক্ত করার চেষ্টা করেছি @query_result_seperator = ','তবে ফলাফল সর্বত্রই ছিল!

আমি যখন রিপোর্টটি সাধারণত চালিত করি তখন এসকিউএল এ আউটপুটটি ভাল দেখায়। তবে এটি কোনও সিএসভি হিসাবে বা কেবল বার্তায় পাঠানো যায় না।

আমি মনে করি যে যদি আমি এইচটিএমএল হিসাবে আউটপুট রফতানি করি এবং এটি সংযুক্তি হিসাবে / বা এক্সএমএল হিসাবে প্রেরণ করি তবে এটি কীভাবে করতে হয় তা আমি জানি না তবে এটি আরও ভাল কাজ করতে পারে।

যে কেউ কোন পরামর্শ আছে?

আগাম ধন্যবাদ!

উত্তর:


11

আপনার যদি এখনও ফাইলটি রফতানি করতে হয় এবং এটি সংযুক্তি হিসাবে প্রেরণ করতে হয় তবে এটি এসকিউএল সার্ভারে সম্পূর্ণ স্বয়ংক্রিয়ভাবে তৈরি হতে পারে।

বিসিপির মাধ্যমে সিএসভি হিসাবে রফতানি অর্জন করা যায় । এই উত্তরে আরও বিশদ রয়েছে তবে মূল ধারণাটি হ'ল:

bcp "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable" queryout "D:\MyTable.csv" -c -t , -S SERVERNAME -T

তারপরে আপনি ফাইলটি ইমেলের সাথে সংযুক্ত করবেন sp_send_dbmail

USE msdb;
GO

EXEC sp_send_dbmail 
  @recipients='mark@mark.com',
  @subject='Client Report',
  @body='Please find your latest report attached',
  @file_attachments='D:\MyTable.csv';

আপনি চাইলে এক ইমেইলে একাধিক ফাইল সংযুক্ত করতে পারেন ।


8

হ্যাঁ আপনি এইচটিএমএল ফর্ম্যাটের মাধ্যমে প্রতিবেদনটি পাঠাতে পারেন, উদাহরণস্বরূপ এমএসে তালিকাভুক্ত:

পরিস্থিতি: এই উদাহরণটি ড্যান উইলসনকে ডান উইলসনকে একটি ই-মেইল বার্তা প্রেরণ করে ডান উইলসন ডানউ @ অ্যাডভেঞ্চার- ওয়ার্কস ডটকম ব্যবহার করে। বার্তায় ওয়ার্ক অর্ডার তালিকার বিষয় রয়েছে এবং এতে একটি এইচটিএমএল ডকুমেন্ট রয়েছে যা ৩০ এপ্রিল, ২০০৪ এর দু'দিনেরও কম সময়সীমার সাথে কাজের আদেশগুলি দেখায় Dat ডাটাবেস মেল এইচটিএমএল ফর্ম্যাটে বার্তা প্রেরণ করে।

DECLARE @tableHTML  NVARCHAR(MAX) ;

SET @tableHTML =
    N'<H1>Work Order Report</H1>' +
    N'<table border="1">' +
    N'<tr><th>Work Order ID</th><th>Product ID</th>' +
    N'<th>Name</th><th>Order Qty</th><th>Due Date</th>' +
    N'<th>Expected Revenue</th></tr>' +
    CAST ( ( SELECT td = wo.WorkOrderID,       '',
                    td = p.ProductID, '',
                    td = p.Name, '',
                    td = wo.OrderQty, '',
                    td = wo.DueDate, '',
                    td = (p.ListPrice - p.StandardCost) * wo.OrderQty
              FROM AdventureWorks2008R2.Production.WorkOrder as wo
              JOIN AdventureWorks2008R2.Production.Product AS p
              ON wo.ProductID = p.ProductID
              WHERE DueDate > '2006-04-30'
                AND DATEDIFF(dd, '2006-04-30', DueDate) < 2 
              ORDER BY DueDate ASC,
                       (p.ListPrice - p.StandardCost) * wo.OrderQty DESC
              FOR XML PATH('tr'), TYPE 
    ) AS NVARCHAR(MAX) ) +
    N'</table>' ;

EXEC msdb.dbo.sp_send_dbmail @recipients='danw@Adventure-Works.com',
    @subject = 'Work Order List',
    @body = @tableHTML,
    @body_format = 'HTML' ;

তদতিরিক্ত, আপনি এসএসআইএস সার্ভারে পাঠানো পাঠানো এইচটিএমএল ফর্ম্যাট ইমেলটি এসএসআইএস স্ক্রিপ্ট টাস্ক ব্যবহার করে ব্যবহার করতে পারেন

এছাড়াও, আপনি যদি এইচটিএমএল প্রতিবেদনটি নির্ধারণ করতে চান তবে এটি এখানে পড়ুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.