زمانی که با یک پکیج بزرگ و پیچیده سروکار داریم بررسی روند اجرای کامپننتها و خطایابی کمی سخت میشود. در چنین شرایطی وجود یک فایل یا جدولی که Log پکیج را در هر بار اجرا ذخیره کند ضروری است. در SSIS این امکان وجود دارد که از رویدادهای مختلف Log گرفته شود. این کار از دو طریق امکان پذیر است؛ مدیریت رخدادها با تنظیمات دستی و مدیریت رخدادها توسط SSIS Loging
در این مقاله روش اول را شرح میدهم و به روش دوم در مقالهای جداگانه خواهم پرداخت.
مدیریت رخدادها به صورت دستی
اولین روشی که قصد دارم به آن بپردازم، ذخیره Log به صورت دستی است. در این روش باید از سربرگ Event Handlers استفاده کنید. در این قسمت باید از منوی باز شوندهی Executable کامپننت مورد نظر و سپس از منوی باز شوندهی Event handler رخداد مورد نظر را انتخاب کنید.
برای انجام این کار مراحل زیر را انجام دهید.
۱- ابتدا توسط کوئری زیر یک جدول Log ایجاد کنید. از این جدول برای ذخیره خروجی رویدادها استفاده میشود.
CREATE TABLE [dbo].[Log]( [ID] [int] IDENTITY(1,1) NOT NULL, [PackageID] [uniqueidentifier] NULL, [Error] [nvarchar](max) NULL, [Source] [nvarchar](100) NULL, [PackageName] [nvarchar](100) NULL ) ON [PRIMARY] GO |
۲- در Control Flow با استفاده از Execute SQL Task و کوئری زیر یک پکیج ساده ایجاد کنید
select * from shop.Test
۳- به سربرگ Event Handlers رفته و از منوی باز شوندهی Executable کامپننت Execute SQL Task و از منوی باز شوندهی Event handler رخداد onError را انتخاب کنید. برروی Click here to create an ‘onError’ event handler for executable ‘Execute SQL Task’ کلیک کنید تا فعال شود.
۴- از جعبه ابزار یک Execute SQL Task به این قسمت اضافه کنید.
۵- برروی Execute SQL Task دوبار کلیک کنید تا صفحه مربوط به تنظیمات آن باز شود. از کوئری زیر در قسمت SQL Statement استفاده کنید.
insert into Log(PackageID,Error,Source,PackageName) values (?, ?, ?, ?) |
۶- از لیست سمت چپ به قسمت Parameter Mapping رفته و مطابق با شکل زیر آن را تنظیم کنید.
توسط کلید F5 پکیج را اجرا کنید. از آنجایی که جدولی با نام Test وجود ندارد پکیج با خطا مواجه میشود و در این لحظه کامپننت Execute SQL Task که در سربرگ Event Handlers ایجاد شده است شروع به کار میکند و از طریق پارامترهایی که به آن تخصیص دادیم مشخصات مورد نظر را به جدول Log ساخته شده در ابتدای آموزش انتقال میدهد.
در پایان جدول Log به شکل زیر میباشد.
سلام.ممنون ازاطلاعات خوبتون خیلی کاربردی هستند.