مدیریت خطا در SSIS
در سرویسهای یکپارچهسازی دادههای SQL Server (SSIS)، ممکن است خطاهایی هنگام استخراج داده از یک منبع، بارگذاری داده به مقصد یا انجام یک تبدیل رخ دهد. این خطاها به دلیل دادههای غیرمنتظره به وجود میآیند و متوقف کردن بسته یک روش بد است. برای مدیریت این موقعیتها، SSIS مفهومی به نام مدیریت خطا را معرفی کرده است. در ادامه، نحوه پیکربندی مدیریت خطا را با یک مثال بررسی خواهیم کرد.
برای مقاصد نمایشی SSIS، ما دادههای موجود در فایل Employee.xls را به جدول پایگاهداده SQL Server صادر میکنیم و مدیریت خطا را در مرحله تبدیل دادهها پیکربندی میکنیم. اسکرینشات زیر دادههای موجود در فایل اکسل Employee را نشان میدهد.

از اسکرینشات بالا، میتوانید مشاهده کنید که شغل (Occupation) مربوط به EmpId های 2، 13 و 14 طولی بیشتر از 255 دارد.
مثال مدیریت خطا در SSIS
وظیفه جریان دادهها را از جعبه ابزار به جریان کنترل بکشید و رها کنید و سپس نام آن را به “مدیریت خطا” تغییر دهید.

روی آن دوبار کلیک کنید تا تب جریان دادههای سرویس یکپارچهسازی باز شود. حالا، منبع Excel، تبدیل دادهها (Data Conversion Transformation) و مقصد OLEDB را از جعبه ابزار به منطقه جریان دادهها بکشید و رها کنید.

با دوبار کلیک روی منبع Excel، تنظیمات مدیر اتصال باز میشود و گزینهای برای انتخاب جدولی که دادههای منبع را نگهداری میکند، فراهم میشود. در اینجا، ما فایل Employees.xls موجود در سیستم فایل را انتخاب میکنیم.

از اسکرینشات بالا، میتوانید مشاهده کنید که ما جدول Employee_Destination موجود در فایل Employee.xls را انتخاب میکنیم.

روی OK کلیک کنید و پیکان آبی را از منبع Excel به تبدیل دادهها (Data Conversion Transformation) بکشید. این کار اجازه میدهد تا تبدیل از دادههای منبع استفاده کند.
حال، لطفاً دوبار روی تبدیل دادهها (Data Conversion Transformation) کلیک کنید تا آن را ویرایش کرده و نوع دادههای ستونهای منبع را به نوع داده مورد نظر با طول مناسب تبدیل کنید.
در اینجا، ما طول شغل (Occupation) را 255 باقی میگذاریم زیرا قصد داریم بهطور عمدی بسته را شکست بدهیم.

حال باید جزئیات جدول مقصد را ارائه دهیم. بنابراین، دوبار روی مقصد OLE DB کلیک کنید و اطلاعات مورد نیاز را وارد کنید. همانطور که در زیر مشاهده میکنید، ما جدول Duplicate Employee Error Handler را انتخاب کردهایم.

روی تب Mappings کلیک کنید تا بررسی کنید که آیا ستونهای منبع به درستی به ستونهای مقصد نگاشت شدهاند یا خیر.

روی OK کلیک کنید تا پنجره فوق بسته شود.
پیکربندی مدیریت خطا در SSIS
یک مقصد OLE DB دیگر بکشید و رها کنید تا مدیریت خطا پیکربندی شود و خروجی خطا ذخیره گردد. سپس، خط قرمز را از تبدیل دادهها (Data Conversion) به مقصد OLE DB 1 بکشید.

کشیدن خروجی خطا به مقصد OLE DB پنجره زیر را باز خواهد کرد. شما باید از این پنجره برای پیکربندی مدیریت خطا استفاده کنید. به طور پیشفرض، تمام ستونها به ویژگی Fail کامپوننت اشاره دارند.

خروجی خطا سه گزینه برای مدیریت خطا در SSIS فراهم میکند:
Fail Component: در صورت بروز خطا، تبدیل، منبع، مقاصد و غیره شکست میخورند.
Ignore Failure: خطاهای ردیف را نادیده میگیرد.
Redirect Rows: ردیفهای موفق را به مقصد مشخص شده باز میگرداند و ردیفهای ناموفق را به خروجی خطا هدایت میکند. این گزینه باعث شکست وظیفه نمیشود.
لطفاً گزینه را برای هر دو ستون Errors و Truncation به Redirect Row تغییر دهید.

روی OK کلیک کنید تا پنجره پیکربندی خروجی خطا بسته شود.

با دوبار کلیک روی مقصد OLE DB 1، ویرایشگر مقصد باز خواهد شد. در حال حاضر، ما با استفاده از دکمه New یک جدول جدید ایجاد میکنیم.

روی تب Mappings کلیک کنید تا بررسی کنید که آیا ستونهای منبع به درستی به ستونهای مقصد نگاشت شدهاند یا خیر.

روی OK کلیک کنید تا پیکربندی مقصد OLE DB تکمیل شود. اسکرینشات زیر، بسته نهایی مدیریت خطا در SSIS را نشان میدهد.

بیایید بسته مدیریت خطا در SSIS را اجرا کنیم. همانطور که در اسکرینشات زیر مشاهده میکنید، 11 ردیف (موفق) به مقصد OLE DB هدایت میشود و 3 ردیف به خروجی خطا منتقل میشود.

لطفاً Management Studio را باز کنید تا نتیجه بسته را بررسی کنید.

سپس، جدول دوم SQL را باز کنید تا رکوردهای بازگشتی از خطا را بررسی کنید.

دیدگاهتان را بنویسید