جلسه هفتم – 5/08/93 پارامترها و متغییرها، LOOP، Execute SQL Task

جلسه هفتم – 5/08/93

متغییرها و پارامترها در SSIS : متغییرها و پارامترها اشیایی هستند که برای نگهداری مقادیر می­توان از آنها استفاده نمود.

تفاوت پارامتر و متغییر:

·         Usage: کاربرد

o        پارامترها: برای ارسال به یک package قبل از اجرا استفاده می‏شود

o        متغییرها: برای نگهداری مقادیر در طول اجرای package مورد استفاده قرار می گیرد

·         Scope: حوزه اعتبار

o        پارامترها:

§         Project Level

§         Package Level

o        متغییرها: نمی توان از متغییرها بین پروژه ها استفاده کرد

§         Package Level

§         Container Level

§         Task Level

§         Event Handling Level

·         Execution Time Behavior:

o        پارامترها:  در حین اجرا قابل تغییر نیستند

o        متغییرها: در حین اجرا قابل تغییر هستند

·         Support Data Type:

o        پارامتر: تمامی انواع داده به جز: DBNull، Char، Object

o        متغییرها: تمام انواع داده

* برای Dynamic کردن OLE DB Source (یا سایر انواع منبع) کافی است تا روی Connection ، properties گرفته و مقدار Experssion را برابر مقدار متغییر نمایید.

Container: در برگیرنده اشیاء در محیط Control Flow است، استفاده از Container:

1.       امکان دسته بندی منطقی اشیاء فراهم می شود

2.       امکان تعریف متغییر در حوزه یک Container فراهم می شود

3.       امکان انتخاب روش های مختلف برای مدیریت تراکنش ها به ازای هر Container مقدور است

4.       امکان ایجاد حلقه در برخی از انواع Container وجود دارد

انواع Container:

§         Sequence Container: مزایای 1،2،3 فوق را دارد

§         For Loop Container: تمام مزایا و ایجاد حلقه با شروط عددی

§         For Each Loop Container: تمام مزایا و ایجاد حلقه به تعداد اشیاء مورد نظر

 

Execute SQL Task: در محیط Control Flow بوده و ابزاری است که بوسیله آن می توان یک قطعه کد SQL را برروی یک DB رابطه ای ایجاد نمود.

§         General: تنظیمات عمومی Task در آن انجام می شود

o        Connection

o        SQL Statement

§         Parameter Mapping: جهت مقداردهی گزاره های پارامتریک (نظیر Stored Procedure)

§         Result Set: جهت ذخیره نمودن نتایج اجرای یک گزاره (Query)  در یک یا چند متغییر

Foreach Loop:

§         Collection: معرفی مجموعه ای از اشیاء جهت تولید حلقه به تعداد آنها

§         Variable Mapping: خواندن مقادیر در هردور حلقه و ذخیره کردن آنها در یک یا چند متغییر

 

مثال: فرض کنید که قرار است که اطلاعات مشتریان از چندین بانک اطلاعاتی با فرمت یکسان خوانده شده و اطلاعات تمامی مشتریان در بانک اطلاعاتی هدف و جدول اطلاعاتی مشخص وارد شود.

گام های انجام کار:

1.       ابتدا فهرست بانکهای اطلاعاتی که باید اطلاعات مشتریان از روی آنها استخراج شود تعریف می شود. پیشنهاد می شود تا برای انجام این کار و کارهای مشابه یک بانک اطلاعاتی با نام ETLSetting آماده نمایید.

2.       جدولی با نام DatabaseList در بانک اطلاعاتی ETLSetting شامل فهرست بانکهای اطلاعاتی ایجاد نمایید.

CREATE TABLE dbo.DatabaseList

       (

       DatabaseName varchar(50) NOT NULL

       )  ON [PRIMARY];

 

Insert dbo.DatabaseList (DatabaseName) values ('[AdventureWorks2012]');

Insert dbo.DatabaseList (DatabaseName) values ('DB2');

Insert dbo.DatabaseList (DatabaseName) values ('DB3');

3.       در بخش Control Flow یک عنصر از نوع Execute SQL Task قرار دهید. وظیفه نهایی این عنصر قراردادن فهرست بانک­های اطلاعاتی در یک متغییر می باشد.


4.       در بخش General عنصر SQL Task تنظیمات زیر را انجام دهید. به پارامترهای resultset، connection و SQLStatement توجه بفرمایید:


5.       در بخش Result Set نیز به ترتیب زیر عمل کنید. متغییر DatabaseList، متغییری است که فهرست بانک های اطلاعاتی که نتیجه اجرای SQL Task می باشد در آن ذخیره می شود. به مقدار ResultName توجه نمایید.


توجه: متغییر DatabaseList را می توان در همین فرم تعریف کرد یا از قبل از بخش تعریف متغییرها استفاده و آن را تعریف و در اینجا از آن استفاده نمود.

6.       اکنون یک حلقه loop از نوع foreach لازم دارید که بتوان برروی شیء فهرست بانک های اطلاعاتی (DatabaseList) حرکت کرده و نتیجه را در متغییر مثلا با نام DatabaseName قرارداد.


7.       تنظیمات حلقه به شکل زیر است:


8.       اکنون نوبت کار با اطلاعات فرارسیده و کافی است تا عنصر Data Flow Task را مطابق شکل زیر در بخش حلقه قرار دهید:


9.       با دابل کلیک برروی بخش Data Flow Task به صفحه طراحی آن وارد شده و به ترتیب زیر عمل می کنیم. در بخش ارتباط منبع باید به بانک اطلاعاتی Dynamic Database اشاره کنید و در بخش مقصد نیز باید از TargetDatabase استفاده نمایید.


10.   با اجرای بسته (package)، اطلاعات مشتریان از بانک های اطلاعاتی فهرست شده استخراج و در جدول هدف درج خواهند شد.