فصل نهم

 

Integration Services

 

DTS[1] يكي از مفيدترين و محبوب‌ترين برنامه‌هاي SQL Server از زمان معرفي آن در SQL Server 7 بوده است. DTS در اصل ابزاري است كه براي انجام اقتباس داده، تبديل و بارگذاري (ETL) براي انبارهاي داده OLAP Services استفاده مي‌شود. هرچند، مايكروسافت سريعاً مفيد بودن آن را تشخيص داد و DTS را ابزار اصلي براي وارد و صادر كردن داده از پايگاه‌هاي داده رابطه‌اي SQL Server و يك ابزار BI ETL كرد. علاوه بر سهولت استفاده از ابزار bcp[2] خط فرمان قديمي كه جايگزين شده است، DTS گام بزرگي ماوراي يك برنامه انتقال داده است كه اين كار با فراهم كردن توانايي انتقال داده هنگام انتقال‌هاي داده ساده طراحي شده است و يك طراحي گرافيكي را ارايه مي‌كند كه براي عمليات انتقال داده پيچيده‌تر و تبديل است. نگارش‌هاي DTS از SQL Server 7 و 2000، از 100 درصد OLE DB براي پايگاه داده منبع و مقصد پشتيباني مي‌كنند. اين بدان معني است كه هرچند DTS بخشي از SQL Server بود، واقعاً مي‌توانست براي انتقال داده بين هر دو منبع داده OLE DB استفاده شود، بدون اين كه نياز باشد SQL Server منبع يا مقصد داده باشد. براي نمونه، علاوه بر توانايي وارد و صادر كردن داده از پايگاه‌هاي داده SQL Server، DTS هم‌چنين مي‌توانست براي انتقال داده بين ساير سيستم‌هاي پايگاه داده از قبيل Access، Oracle و DB2 بدون دخالت SQL Server استفاده شود. اين نوع انعطاف‌پذيري موجب قوي‌تر و مفيدتر شدن DTS به عنوان ابزار انتقال داده مي‌شود.

هرچند، DTS در حد امكان مفيد و جالب است، باز هم محدوديت‌هاي نسبتاً مهمي دارد. DTS براي اين كه آماده عرضه جهاني شود، نياز به مقياس‌پذيري بهتري دارد. علاوه بر اين، بسته‌هاي DTS به سادگي بين سيستم‌ها قابل حمل نيستند. به عبارت ديگر، يك بسته DTS كه براي انجام انتقالي از سيستم SQL Server A طراحي شده است، به سادگي نمي‌تواند براي انجام همان انتقال از سيستم B مجدداً استفاده شود. علاوه بر اين محدوديت‌هاي توزيع، نگارش‌هاي قبلي DTS فاقد سيستم Login و مديريت خطاي قوي بوده و قابليت مديريت محدودتري داشتند.

در SQL Server 2005، مايكروسافت DTS را اصلاح كرده و آن را از زمينه بازنويسي كرده است. طبق تمام طبيعت جديد آن، مايكروسافت نام DTS را به Integration Services تغيير داده است. هدف مايكروسافت از SQL Server 2005 Integration Services، ساخت آن به عنوان يك محيط ETL جهاني براي Windows برابر با هر محصول BI ETL سطح جهاني مستقل است. براي اين مسائل، مايكروسافت Integration Services كاملاً جديد را با استفاده از كد .NET مديريت شده نوشته است و پايه مستحكم‌تري به آن بخشيده است. در اين فرآيند، مايكروسافت Integration Services را كاملاً از اول طراحي كرده است، معماري كاملاً جديدي به آن داده و پشتيباني بهتري براي قابليت برنامه‌نويسي و كارآيي زمان اجراي بهبود يافته فراهم كرده است. Integration Services جديد، داراي ويژگي‌هايي نظير يك طراح گرافيكي جديد و يك انتخاب بهبود يافته مهم از وظايف انتقال داده و تبديلات است. Integration Services شبيه DTS قديمي، از 100 درصد منبع و مقصد پشتيباني مي‌كند، بدين معني كه مي‌تواند به‌طور مستقل به هر منبع داده منبع و مقصد متصل شود، بدون نياز به اين كه منبع داده، يك سيستم SQL Server باشد. در اين فصل، مطالبي درباره اين ويژگي‌هاي جديد در SQL Server 2005 Integration Services مي‌آموزيد. ابتدا، نگاهي به درون معماري Integration Services جديد خواهيد داشت و سپس توري راهنما از اجزا و ابزارهاي Integration Services جديد داريم.

 

معماري Integration Services جديد

معماري Integration Services جديد به دو بخش اصلي تقسيم مي‌شود: DTP[3] و DTR[4]. مايكروسافت Integration Services را به دو بخش اصلي تقسيم كرده است، به ويژه به اين دليل كه حايل واضحي را بين جريان داده و جريان كاري به وجود آورد. در نگارش‌هاي قبلي DTS، موتور جريان داده قوي‌تر از قابليت‌هاي جريان كاري بود. اين تقسيم‌بندي جديد لزوماً بخش جريان كاري Integration Services را يك جزء كلاس بالا در همان سطح جزء جريان داده ساخته است. DTP جديد لزوماً جايگزين Data Pump DTS قديمي شده است كه در نگارش‌هاي SQL Server 7 و 2000 از DTS استفاده مي‌شوند. كار اصلي آن، مديريت جريان داده بين منبع و مقصد است. DTR اصولاً يك محيط اجراي كاري است كه جريان كاري مورد استفاده در يك بسته Integration Services را كنترل مي‌كند. هر يك از اين اجزا با استفاده از DLL خاص خود و مدل شيئي مجزاي خود پياده‌سازي مي‌شوند. در شكل 1-9، مي‌توانيد مروري از معماري Integration Services جديد را ببينيد.

 

شكل 1-9 معماري Integration Services

 

DTP و Integration Services DTR جديد را در بخش‌هاي بعد به‌طور مفصل تشريح مي‌كنيم. براي كسب اطلاعات بيشتر درباره اين مجموعه ابزار Integration Services جديد، در ادامه فصل مطالبي ارايه مي‌شود.

 

DTP

DTP به تبديلات و جريان داده‌اي توجه دارد كه هنگام انتقال رديف‌ها بين منبع و مقصد داده انجام مي‌شوند. DTP از آداپتورهاي داده براي اتصال به منابع و مقصد استفاده مي‌كند. همان‌گونه كه در شكل 1-9 مي‌بينيد، موتور DTP با استفاده از مدل شيئي DTP Pipeline مورد دستيابي قرار مي‌گيرد. اين مدل شيئي، APIاي است كه توسط تبديلات تعبيه شده و تأمين شده توسط مايكروسافت و تبديلات اختصاصي ايجاد شده كاربر استفاده مي‌شوند. تبديلات داده، رديف را هنگامي انتقال داده و دستكاري مي‌كنند كه داده از ستون‌هاي منبع به ستون‌هاي مقصد منتقل مي‌شوند. مي‌توانيد در شكل 2-9، معماري DTP جديد را به‌طور مفصل‌تر بررسي كنيد.

 

شكل 2-9 اجزاي DTP

 

DTP از آداپتورهاي داده براي اتصال نقاط انتهايي منبع و مقصد داده استفاده مي‌كند. همان‌گونه كه از نام آن‌ها مشخص است، آداپتورهاي داده منبع داده متصل شده و ورودي براي بسته‌هاي Integration Services را فراهم مي‌كنند. آداپتورهاي داده مقصد، به مقصد داده متصل شده و داده را به خروجي ارسال مي‌كنند. SQL Server 2005 تعدادي آداپتور داده منبع و مقصد را فراهم كرده است. SQL Server 2005 Integration Services همراه با تعدادي آداپتور منبع و مقصد تعبيه شده است، از جمله آداپتورهايي براي SQL Server، فايل‌هاي flat و ساير منابع داده سازگار با OLE DB. براي كسب اطلاعات بيشتر درباره آداپتورهاي داده خاصي كه پشتيباني مي‌شوند، به بخش بعدي اين فصل مراجعه كنيد.

در حالي كه كار آداپتورهاي داده، ساخت اتصالاتي به نقاط انتهايي منبع و مقصد داده است، كار تبديلات Integration Services انتقال و احتمالاً دستكاري داده هنگام انتقال بين نقاط انتهايي منبع و مقصد است. تبديل Integration Services مي‌تواند به سادگي يك نگاشت يك به يك بين ستون‌هاي منبع و مقصد، ايجاد ستون‌هاي مقصد جديد با استفاده از نگاشت‌هاي يك به چند يا محاسبه ستون‌هاي مشتق شده را انجام دهد. SQL Server 2005 Integration Services همراه با تعدادي تبديلات تعبيه شده واقعي است كه در ادامه اين فصل بيان مي‌گردند. علاوه بر اين تبديلات تعبيه شده، مي‌توانيد تبديلات اختصاصي خاص خود را با بهره بردن از API مدل شيئي DTP بسازيد.

DTR

DTR شامل موتور DTR و اجزاي DTE است. اجزاي DTR اشيايي هستند كه به شما امكان مي‌دهند تا بر اجراي Integration Services نظارت داشته باشيد. اجزاي DTR براي ساخت جريانات كاري استفاده مي‌شوند، كانتينرهايي كه عمليات ساخت يافته را فراهم مي‌كنند، وظايفي كه انتقال داده را و عملكرد تبديل را فراهم مي‌كنند و الزاماتي كه توالي يك جريان كاري را در يك بسته كنترل مي‌كنند. مي‌توانيد مروري از معماري DTR جديد را در شكل 3-9 ببينيد.

 

شكل 3-9 مروري بر DTR

 

اجزاي DTR اصلي، كانتينرها و وظايف هستند. وظايف كلكسيون‌هايي از اجزاي DTR هستند؛ هر وظيفه مركب از منابع و مقاصد داده و تبديلات داده هستند. كانتينرها براي سازمان‌دهي وظايف مرتبط استفاده مي‌شوند. اين كانتينرها و وظايف براي تشكيل بسته‌ها، با يكديگر گروه‌بندي مي‌شوند. بسته[5] Integration Services واحدي فيزيكي است كه تمام اعمالي را كه در يك عمل انتقال معين انجام خواهند شد، با يكديگر گروه‌بندي مي‌كند. بسته‌ها توسط DTR براي انجام انتقال‌هاي داده اجرا مي‌شوند. بسته‌هاي Integration Services مي‌توانند به سادگي مجدداً اجرا شوند يا حتي به سيستمي متفاوت منتقل شده و به‌طور مستقل اجرا شوند. براي كسب اطلاعات بيشتر درباره اجزاي خاصي كه DTR را تشكيل مي‌دهند، به ادامه فصل مراجعه كنيد.

هدف اصلي موتور DTR كنترل اجراي بسته‌هاي Integration Services است. DTR جريان كاري وظايف موجود در يك بسته Integration Services را كنترل مي‌كند. علاوه بر اين، موتور DTR چيدمان بسته را ذخيره مي‌كند؛ بسته‌ها را اجرا كرده و سرويس‌هاي اشكال‌زدايي، login كردن و مديريت رويداد را فراهم مي‌كند. موتور DTR هم‌چنين به شما امكان مديريت اتصالات و دستيابي به متغيرهاي بسته Integration Services را مي‌دهد.

DTR با استفاده از چارچوب كاري شيئي DTR مورد دستيابي قرار مي‌گيرد. چارچوب كاري شيئي زمان اجراي DTR يك API است كه از Integration Services Import/Export Wizard و Integration Services Designer علاوه بر ابزار dtexec خط فرمان پشتيباني مي‌كند. Import/Export Wizard و Designer براي ايجاد بسته‌ها استفاده مي‌شوند. موتور DTR كه به C++ نوشته شده است و API آن با استفاده از يك C++ API طبيعي و يك اسمبلي .NET ارايه مي‌شوند كه به آن امكان مي‌دهد از طريق برنامه‌هاي .NET مديريت شده مورد دستيابي قرار گيرد. برنامه‌هايي كه از مدل شيئي DTR استفاده مي‌كنند مي‌توانند ايجاد و اجراي بسته‌هاي Integration Services را خودكار كنند.

 

اجزاي بسته Integration Services

بسته‌هاي Integration Services، كلكسيون‌هايي از اجزاي DTR و DTP را سازمان‌دهي مي‌كنند. بسته واحد اجرايي براي عمل انتقال Integration Services است. به عبارت ديگر، براي استفاده از Integration Services براي انجام انتقال‌هاي داده و عمليات ETL، بايد بسته‌اي را ايجاد كنيد كه حاوي تمام اجزاي DTP باشد كه منبع و مقصد را براي داده و تبديلاتي كه انجام خواهند شد تعريف مي‌كنند. هنگامي كه بسته‌اي ايجاد مي‌شود، بسته را براي انجام انتقال داده اجرا مي‌كنيد. مي‌توانيد مروري از يك بسته Integration Services نمونه را در شكل 4-9 ببينيد.

بسته‌هاي Integration Services مي‌توانند با استفاده از مجموعه‌اي از ابزارهاي فراهم شده توسط SQL Server 2005 ايجاد شوند يا مي‌توانند با برنامه‌نويسي با استفاده از DTR API ايجاد گردند. بسته‌هاي Integration Services مي‌توانند در پايگاه داده SQL Server msdb به عنوان فايل‌هاي XML كه در سيستم‌هاي فايل قرار مي‌گيرند، ذخيره شوند. مي‌توانيد پيش‌نمايشي از ابزارهاي طراحي Integration Services را در ادامه فصل ببينيد.

 

ويژگي‌هاي بسته Integration Services

عجيب نيست كه معماري Integration Services جديد، تعدادي قابليت جديد مهم را به Integration Services اضافه كرده است كه آن را يك ابزار تبديل داده جهاني قوي‌تر كرده است. سپس، برخي از بهبودهاي مهمي را بررسي مي‌كنيم كه اين نگارش جديد از Integration Services براي جدول آورده است.

 

شكل 4-9 مروري بر بسته Integration Services

 

تنظيم خصوصيات زمان اجراي بسته‌هاي Integration Services

يكي از محدوديت‌هاي عمده نگارش‌هاي Integration Services اين واقعيت است كه بسته‌ها لزوماً به يك منبع و مقصد معين مرتبط هستند. اين بدان معني است كه داشتن يك بسته معين و استفاده مجدد آسان از آن در سروري متفاوت واقعاً مشكل بود، حتي اگر آن سرور از همان پايگاه‌هاي داده پشتيباني كند. در حالي كه استفاده از متغيرهاي سراسري و ساير workaroundهاي پيچيده براي رفع اين محدوديت امكان‌پذير بود، اين workaroundها راه‌حل‌هايي قوي براي اين مشكل نيستند. SQL Server 2005 Integration Services جديد به يك بسته امكان مديريت چندين نقطه انتهاي منبع و مقصد را مي‌دهد. مي‌توانيد از اين ويژگي براي تنظيم خصوصيات بسته در زمان اجرا از فايل‌هاي پارامترها، Registry يا اسناد XML استفاده كنيد.

 

 

 

Login كردن

Integration Services اصلي هم‌چنين از قابليت‌هاي login تعبيه شده پشتيباني مي‌كند. عمل login بسته‌ها، به ويژه براي نظارت و عيب‌يابي مفيد است. در حالي كه مي‌توانيد آن‌ها را شخصاً اضافه كنيد، اين مسأله نياز به كار برنامه‌نويسي در بخش شما دارد. SQL Server 2005 Integration Services جديد، گزينه‌هاي login كردن تعبيه شده را براي بسته‌ها، وظايف و تبديلات را فراهم كرده است.

 

شروع مجدد و نقطه بررسي

ويژگي جديد مهم ديگر در SQL Server 2005 Integration Services، پشتيباني براي نقاط بررسي و شروع مجدد در بسته‌هاي Integration Services است. اين ويژگي جديد امكان مي‌دهد نقاط بررسي متفاوت به مراحل مختلف در بسته‌هاي Integration Services پيچيده مرتبط شوند. بنابراين اگر بسته‌اي كه از نقاط بررسي استفاده مي‌كنند، ناموفق باشد، كل بسته نبايد مجدداً از ابتدا اجرا شود. در عوض، اين بسته مي‌تواند در ابتداي نقطه بررسي ناموفق مجدداً شروع شود. براي بسته‌هاي با اجراي طولاني، اين امر مي‌تواند در زمان صرفه‌جويي زيادي كند، زيرا كل بسته نبايد مجدداً پردازش شود. در عوض، بسته Integration Services مي‌تواند از محلي كه پردازش رها شده است، ادامه دهد. هنگامي كه اين مسأله با مدير رويداد تركيب مي‌شود، مي‌تواند ابزار مفيدي براي مديريت خودكار كارهاي Integration Services شما باشد.

 

متغيرها

پشتيباني از متغيرها، ويژگي جديد ديگري در SQL Server 2005 Integration Services است. در SQL Server 7 و SQL Server 2000، بسته‌هاي DTS از متغيرهايي براي استفاده در اسكريپت‌هاي تبديل پشتيباني مي‌كند، ولي از متغيرهاي حوزه بسته پشتيباني نمي‌كند. اين فقدان متغيرهاي سراسري، آن را براي استفاده مجدد از بسته‌هاي DTS در چندين پايگاه داده و سرورهاي مختلف مشكل مي‌كرد. براي اطمينان، راه‌حل‌هايي وجود داشت، ولي با توجه به اين كه بسته‌هاي DTS براي استفاده شدن در اين الگو طراحي نشده‌اند، اين راه‌حل‌ها قدري پيچيده بوده و چندان قوي نيستند. در SQL Server 2005، طراحي Integration Services جديد، پشتيباني از بسته، وظيفه و متغيرهاي سطح رويداد را فراهم كرده است، انعطاف‌پذيري بسته‌هاي Integration Services را افزايش داده و هم‌چنين موجب تسهيل زياد بسته‌هاي Integration Services شده است. همان‌گونه كه از نام آن‌ها مشخص است، متغيرهاي حوزه بسته مي‌توانند با تمام اجزا در بسته Integration Services ديده شوند. متغيرهاي حوزه وظيفه مي‌توانند توسط اجزاي آن وظيفه خاص ديده شده و مورد دستيابي قرار گيرند، ولي نه با هر يك از اجزاي ديگري كه بخشي از بسته Integration Services هستند. يك كاربرد نمونه از يك متغير Integration Services حوزه بسته ممكن است حاوي نام سيستم SQL Server جاري باشد، به بسته اجازه مي‌دهد تا در سيستم ديگري با جايگزين كردن آن نام سرور سيستم در متغيرهاي Integration Services در زمان اجرا به سادگي اجرا شوند.

 

متغيرهاي سيستم

تمام بسته‌هاي Integration Services داراي تعدادي متغير سيستمي تعبيه شده هستند كه جنبه‌هاي مختلف يك بسته Integration Services را نشان مي‌دهند. جدول 1-9 متغيرهاي سيستمي Integration Services جديد را فهرست كرده است.

 

جدول 1-9 متغيرهاي سيستمي Integration Services

متغير سيستمي

شرح

BreakpointTargetDescription

حاوي شرحي از نقطه شكست است.

Cancel

نشان مي‌دهد كه اجرا بايد لغو شود.

CountDone

حاوي شمارنده پيشرفت انتقال است.

CreationDate

حاوي تاريخ ايجاد بسته است.

CreatorComputerName

حاوي نام كامپيوتر مورد استفاده براي ايجاد بسته است.

CreatorName

حاوي نام كاربري است كه بسته را ايجاد كرده است.

CustomEventDescription

يك رويداد اختصاصي را توصيف مي‌كند.

CustomEventInfo

حاوي اطلاعات رويداد اختصاصي است.

CustomEventName

حاوي يك نام رويداد اختصاصي است.

CustomEventValue

حاوي مقدار رويداد اختصاصي است.

CustonEventGUID

حاوي GUID رويداد اختصاصي است.

ErrorCode

حاوي يك كد خطاست.

ErrorDescription

حاوي يك شرح خطاست.

ExecutionInstanceGuid

حاوي يك GUID است كه نمونه بسته جاري را تعيين مي‌كند.

ExecutionStatus

حاوي وضعيت اجراي بسته است.

LocaleId

حاوي كد تعيين هويت Locale است.

MachineName

حاوي نام ماشين جاري است.

MaxCount

حاوي حداكثر تعداد آيتم‌هاي منتقل شونده است.

PackageId

حاوي تعيين هويت بسته جاري است.

PackageName

حاوي نام بسته جاري است.

PercentComplete

حاوي وضعيت پيشرفت انتقال است.

ProgressCountHigh

حاوي حد بالاي پيشرفت انتقال است.

ProgressCountLow

حاوي حد پايين پيشرفت انتقال است.

ProgressDescription

حاوي شرح پيشرفت انتقال است.

ProgressEvent

حاوي تعيين هويت رويداد پيشرفت انتقال است.

Propagate

نشان مي‌دهد آيا يك رويداد مي‌تواند منتشر شود.

SourceDescription

حاوي يك شرح منبع رويداد است.

SourceID

حاوي يك تعيين هويت منبع رويداد است.

SourceName

حاوي نام يك منبع رويداد است.

StartTime

حاوي زمان شروع اجراي بسته است.

TaskID

حاوي يك تعيين هويت وظيفه است.

TaskName

حاوي نام يك وظيفه است.

UserName

حاوي نام كاربر اجرا كننده بسته است.

VersionBuild

حاوي شماره ساخت بسته است.

VersionComment

حاوي شرح بسته است.

VersionGUID

حاوي GUID بسته است.

VersionMajor

حاوي شماره نگارش اصلي بسته است.

VersionMinor

حاوي شماره نگارش فرعي بسته است.

 

كنترل جديد پيچيده

SQL Server 2005 Integration Services هم‌چنين از كنترل جريان پيچيده پشتيباني مي‌كند. در هر بسته Integration Services، مي‌توانيد مسيري را مشخص كنيد كه چنانچه يك عمل معين موفق يا ناموفق باشد، انجام خواهد شد. مثلاً، اگر عملي موفق باشد، مي‌توانيد بسته Integration Services خود را براي رفتن به عمل بعدي تنظيم كنيد. در غير اين صورت، اگر عملي ناموفق باشد، مي‌توانيد عمل ديگري را انجام دهيد. اطلاعات بيشتر درباره ويژگي جريان خطايي جديد در اين بخش ارايه مي‌شود هم‌چنين مي‌توانيد جريان كنترل را در روشي تنظيم كنيد كه چندين وظيفه مي‌توانند به‌طور موازي اجرا شوند يا مي‌توانيد وظايف را مجبور به اجراي ترتيبي كنيد كه اين كار با مشخص كردن اين وظيفه بعدي اجرا نخواهد شد تا وقتي كه وظيفه جاري تكميل شود. هم‌چنين مي‌توانيد از يك ساختار Integration Services جديد به نام كانتينر[6] براي گروه‌بندي وظايف Integration Services مرتبط با يكديگر استفاده شود. هم‌چنين مي‌توانيد داراي متغيرها و جريان كنترل داخلي خاص خود باشند. هم‌چنين چندين ساختار حلقه وجود دارد كه به شما امكان تنظيم اعمال تكراري را مي‌دهند. يك كانتينر For Each Loop وجود دارد كه قادر به تكرار گروهي از اشياست و عملي را روي اين اشيا در هر تكرار انجام مي‌دهد. علاوه بر اين، يك كانتينر For Loop وجود دارد كه مي‌تواند يك عبارت را ارزيابي كند و به‌طور شرطي اعمال تكراري را انجام دهد.

 

جريان‌هاي خطا

يكي از ويژگي‌هاي جديد مهم SQL Server 2005 Integration Services، توانايي آن براي پشتيباني از جريان‌هاي خطاست. ويژگي Error Flows جديد، لزوماً به شما امكان افزودن مديريت خطا را به بسته‌هاي Integration Services شما مي‌دهد. با اين ويژگي جريان‌هاي خطاي جديد، هنگامي كه يك Integration Services، رديف‌هاي حاوي شروط خطا را تبديل مي‌كند، به‌جاي متوقف كردن فرآيند با يك خطا، Integration Services مي‌تواند رديف مشكل‌دار را بر طبق جريان خطايي كه تنظيم كرده است، مسيريابي كند. مثلاً، جريان خطا ممكن است نشان دهد كه رديفي به يك فايل log نوشته شده است يا هم‌چنين مي‌تواند بسته را به وظيفه‌اي هدايت كند كه روال‌هاي خطاي بهتري را انجام دهد كه حتي مي‌تواند داده را دستكاري كرده و رديف را براي پردازش مجدد در pipeline قرار دهد.

 

حالت فوري و حالت پروژه

شبيه روش كار SQL Server 2000 DTS كه DTS داراي يك رابط ويزارد بود كه در اصل براي اجراي انتقال‌هاي داده ويژه طراحي شده بود و يك DTS Designer بود كه براي ساخت بسته‌هاي DTS پيچيده‌تر استفاده مي‌شد، SQL Server 2005 Integration Services از يك حالت فوري[7] و يك حالت پروژه[8] پشتيباني مي‌كند. براي استفاده از Integration Services در حالت فوري، مي‌توانيد Integration Services Import/Export Wizard را از منو اجرا كنيد. Integration Services Import/Export Wizard مي‌تواند براي ساخت، اجرا و ذخيره اختياري بسته‌هاي Integration Services كه انتقال‌هاي ساده را انجام مي‌دهند، استفاده شود. Integration Services Import/Export Wizard جديد SQL Server 2005 بسيار شبيه نگارش موجود در SQL Server 2000 بوده و عمل مي‌كند.

در حالي كه حالت آني براي عمليات انتقال داده يك زمانه سريع مفيد است، حالت پروژه براي ساخت بسته‌هاي Integration Services مهم‌تر با استفاده از Business Intelligence Development Studio مفيد است. Business Intelligence Development Studio حاوي يك Integration Services Designer كاملاً جديد است كه از يك مجموعه كاملاً جديد از Data Flow، Control Flow و Event handlers پشتيباني مي‌كند كه مي‌توانند براي ساخت بسته‌هاي Integration Services به كار روند. Integration Services Designer جديد هم‌چنين پشتيباني كاملي را براي اشكال‌زدايي بسته‌هاي Integration Services فراهم كرده است. مي‌توانيد Integration Services Designer جديد را در ادامه فصل به‌طور مفصل ببينيد.

 

امضاي ديجيتال بسته‌هاي Integration Services

با استفاده از متدي شبيه ويژگي امضاي ديجيتال موجود كه در برنامه‌هاي Microsoft .NET در دسترس قرار گرفته است، بسته‌هاي Integration Services هم اينك مي‌توانند به خوبي امضا شوند. بسته‌ها مي‌توانند در طي فرآيند طراحي با استفاده از Integration Services Designer به صورت ديجيتال امضا شوند. هنگامي كه بسته‌اي به‌طور ديجيتالي امضا شده باشد، آن بسته فقط خواندني است و ديگر نمي‌تواند اصلاح شود.

 

آداپتورهاي داده

DTP از آداپتورهاي داده براي اتصال نقاط انتهايي منبع و مقصد داده استفاده مي‌كند. همان‌گونه كه از نام آن‌ها مشخص است، آداپتورهاي داده منبع به منبع داده متصل شده و ورودي براي بسته‌هاي Integration Services فراهم مي‌كنند. آداپتورهاي داده به مقصد داده متصل شده و داده را به خروجي ارسال مي‌كنند. SQL Server 2005 تعدادي آداپتور داده منبع و مقصد فراهم مي‌كند. جدول 2-9 مجموعه‌اي از آداپتورهاي داده تعبيه شده را فهرست مي‌كند كه در SQL Server 2005 تأمين شده‌اند.

 

جدول 2-9 آداپتورهاي داده تعبيه شده

آداپتور داده

شرح

Flat File Destination Adapter

يك آداپتور سيستم فايل كه داده متني حايل‌دار را به يك فايل مي‌نويسد.

Flat File Source Adapter

يك آداپتور سيستم فايل كه داده متني حايل‌دار را از يك فايل مي‌خواند.

OLE DB Destination Adapter

يك تأمين كننده OLE DB كه داده را به يك مصرف كننده OLE مي‌نويسد.

OLE DB Source Adapter

يك مصرف كننده OLE DB كه داده را از يك تأمين كننده OLE DB مي‌خواند.

Raw File Destination Adapter

يك آداپتور سيستم فايل كه داده را به يك فايل مي‌نويسد.

Raw File Source Adapter

يك آداپتور سيستم فايل كه داده را از يك فايل مي‌خواند.

SQL Server Destination Adapter

يك آداپتور SQL Server كه براي نوشتن داده به يك جدول يا ديدگاه مي‌نويسد.

Web Service Source Adapter

يك آداپتور Web Service كه داده را از يك سرويس وب XML مي‌خواند.

 

كانتينرها

كانتينرها ساختار جديدي هستند كه مايكروسافت به SQL Server 2005 Integration Services اضافه كرده است. هدف اصلي از كانتينرهاي Integration Services، افزودن ساختار و كنترل جريان به بسته‌هاي Integration Services است. كانتينرها وظايف مرتبط را با يكديگر گروه‌بندي كرده و طراحي شده است تا براي اجراي وظايف تكراري يا فراهم كردن بْردي براي متغيرها استفاده شوند. SQL Server 2005 Integration Services از انواع كانتينرهاي نشان داده شده در جدول 3-9 پشتيباني مي‌كند.

 

جدول 3-9 انواع كانتينر Integration Services

كانتينر

شرح

Package Container

كلكسيوني از عناصر بسته

Foreach Loop Container

جريان كنترل تكرار را در يك بسته فراهم مي‌كند.

For Loop Container

پشتيباني از اعمال تكراري را در يك بسته فراهم مي‌كند.

Sequence Container

كانتينرها و وظايف مرتبط را در بسته گروه‌بندي مي‌كند.

TaskHost Container

سرويس‌هايي را براي يك وظيفه فراهم مي‌كند.

Container Properties

مقاديري را نگهداري مي‌كند كه براي كانتينر مشترك هستند.

Container Collections

كلكسيوني از كانتينرها

 

وظايف

وظايف Integration Services اساسي‌ترين عناصر بسته Integration Services هستند. وظيفه Integration Services لزوماً عملي را تعريف مي‌كند كه انجام خواهد شد. اين اعمال در زمينه كپي كردن فايل‌ها، اجراي عبارات T-SQL و اجراي اسكريپت‌ها براي انجام انتقال‌هاي FTP و اجراي مدل‌هاي data mining هستند. چندين وظيفه مرتبط مي‌توانند در كانتينرها گروه‌بندي شوند. جدول 4-9 وظايفي را نشان مي‌دهد كه در SQL Server 2005 Integration Services وجود دارند.

 

جدول 4-9 وظايف Integration Services

وظيفه

شرح

ActiveX Script Task

يك اسكريپت ActiveX را اجرا مي‌كند كه عمل خاصي را انجام مي‌دهد.

Analysis Services Execute DDL Task

عبارات T-SQL DDL را اجرا مي‌كند.

Analysis Services Processing Task

اشياي Analysis Services را پردازش مي‌كند.

Bulk Insert Task

داده را از يك فايل متني در يك جدول درج مي‌كند.

Data Flow Task

داده را بين منابع داده كپي كرده و منتقل مي‌كند.

Data Mining Query Task

پرس‌وجوهاي data mining را اجرا مي‌كند.

Execute Package Task

بسته‌هاي ديگر را اجرا مي‌كند.

Execute Process Task

يك برنامه يا اسكريپت را اجرا مي‌كند.

Execute SQL Task

عبارات T-SQL را اجرا مي‌كند.

File System Task

اعمالي را در سيستم فايل اجرا مي‌كند.

File Transfer Protocol Task

انتقال‌هاي داده FTP را اجرا مي‌كند.

Message Queue Task

پيام‌ها را از پرس‌وجوهاي داده MSMQ ارسال و دريافت مي‌كند.

Script Task

اسكريپت‌هاي نوشته شده در VB.NET را با استفاده از محيط Microsoft Visual Studio for Applications اجرا مي‌كند.

Send Mail Task

يك پيام e-mail را ارسال مي‌كند.

XML Task

به داده‌ها در اسناد XML دستيابي دارد.

 

تبديلات

تبديلات Integration Services آن‌چه را كه هنگام انتقال داده از آداپتور داده منبع به آداپتور داده مقصد بر داده رخ مي‌دهد، كنترل مي‌كند. SQL Server 2005 از تعدادي تبديلات تعبيه شده و تبديلات اختصاصي تعريف شده كاربر پشتيباني مي‌كند. مي‌توانيد تبديلات اختصاصي را با استفاده از API فراهم شده توسط مدل شيئي DTP ايجاد كنيد. SQL Server 2005 Integration Services ليست جامعي از تبديلات استاندارد تعبيه شده را فراهم كرده است كه در جدول 5-9 نشان داده شده‌اند.

 

جدول 5-9 تبديلات استاندارد تعبيه شده

تبديل

شرح

Aggregate Transformation

انبوهه‌ها را انجام مي‌دهد.

Allocation Transformation

مقدار يك ستون ورودي را در بين چندين ستون خروجي گسترش مي‌دهد.

Character Map Transformation

توابع رشته‌اي را بر داده كاراكتري اعمال مي‌كند.

Conditional Split Transformation

داده را ارزيابي كرده و آن را براي خروجي‌هاي مختلف مسيريابي مي‌كند.

Copy/Map Transformation

ستون‌هاي خروجي جديد را با كپي كردن ستون‌هاي ورودي ايجاد مي‌كند.

Data Mining Model Accuracy Transformation

دقت مدل‌هاي data mining را محاسبه مي‌كند.

Data Mining Model Training Transformation

مدل‌هاي data mining را آموزش مي‌دهد.

Data Mining Query Transformation

پرس‌وجوهاي گزاره‌اي data mining را اجرا مي‌كند.

Data Conversion Transformation

نوع داده يك ستون ورودي را به نوع داده خروجي متفاوتي تبديل مي‌كند.

Derived Column Transformation

يك ستون خروجي را از نتايج عبارات ايجاد مي‌كند.

Dimension Processing Transformation

ابعاد مكعب OLAP را پردازش مي‌كند.

File Extractor Transformation

داده را از يك جريان داده بسته خوانده و آن داده را در فايل مي‌نويسد.

File Injector Transformation

داده را از يك فايل خوانده و آن داده را به يك جريان داده بسته اضافه مي‌كند.

Fuzzy Grouping Transformation

مقادير را در داده ستون ورودي استاندارد مي‌كند.

Fuzzy Lookup Transformation

مقادير را در يك جدول مرجع با استفاده از تطابق فازي جستجو مي‌كند.

Logged Lineage Transformation

اطلاعات محيطي را براي جريان داده بسته فراهم مي‌كند.

Lookup Transformation

مقادير يك جدول مرجع را با استفاده از تطابق دقيقي جستجو مي‌كند.

Merge Transformation

دو مجموعه داده ذخيره شده را ادغام مي‌كند.

Merge Join Transformation

دو مجموعه داده را با استفاده از يك تلفيق FULL، LEFT يا INNER تلفيق مي‌كند.

Multicast Transformation

داده ورودي را به خروجي‌هاي مختلف توزيع مي‌كند.

Partition Processing Transformation

پارتيشن‌هاي OLAP را پردازش مي‌كند.

Pivot Transformation

داده ورودي را برطبق يك مقدار ستون ورودي محوري مي‌كند.

Row Count Transformation

رديف‌هاي ورودي را شمارده و تعداد را در يك متغير ذخيره مي‌كند.

Sampling Transformation

يك نمونه‌سازي ارايه‌اي از مجموعه داده ورودي ايجاد مي‌كند.

Script Transformation

يك اسكريپت را براي انجام ورودي اجرا مي‌كند.

Slowly Changing Dimension Transformation

بهنگام‌رساني و درج رديف‌ها را در ابعاد OLAP هماهنگ مي‌كند.

Sort Transformation

داده ورودي را مرتب كرده و داده ذخيره شده در خروجي تبديل را كپي مي‌كند.

Surrogate Key Transformation

خصوصيات اختصاصي اضافي را براي بسته Integration Services فراهم مي‌كند.

Union All Transformation

چند مجموعه داده را ادغام مي‌كند.

UnPivot Transformation

داده ورودي را برطبق يك مقدار ستون ورودي از حالت محوري خارج مي‌كند.

 

مديريت خطا

توانايي به وجود آوردن و مديريت رويدادها، ويژگي جديد ديگري در SQL Server 2005 Integration Services است. مديريت رويداد به بسته‌هاي Integration Services امكان پاسخ دادن به رويدادهايي را مي‌دهد كه در زمان اجرا توسط كانتينرها و وظايف به وجود مي‌آورند. رويدادها مي‌توانند توسط عناصر بسته Integration Services براي مطلع كردن تعدادي از حالات مختلف فعال شوند، از جمله شروط خطا، هنگامي كه وظيفه‌اي شروع شده باشد، هنگامي كه وظيفه‌اي تكميل شده باشد يا تغيير در وضعيت متغير رخ داده باشد. جدول 6-9 مديران رويداد Integration Services را فهرست مي‌كند.

 

جدول 6-9 مديران رويداد Integration Services

مدير رويداد

شرح

OnCustomerEvent

توسط يك وظيفه يا بسته طبق تقاضا به وجود مي‌آيد.

OnError

توسط يك وظيفه يا كانتينر در يك خطا به وجود مي‌آيد.

OnExecStatusChanged

توسط يك وظيفه يا كانتينر هنگامي به وجود مي‌آيد كه وضعيت اجراي آن تغيير كند.

OnPostExecute

توسط يك وظيفه يا كانيتنر بعد از اجراي آن به وجود مي‌آيد.

OnPostValidate

توسط يك وظيفه بعد از تأييد اعتبار آن به وجود مي‌آيد.

OnPreExecute

توسط يك وظيفه يا كانيتنر قبل از اجراي آن به وجود مي‌آيد.

OnPreValidate

توسط يك وظيفه قبل از تأييد اعتبار آن به وجود مي‌آيد.

OnProgress

توسط يك وظيفه يا كانيتنر هنگامي به وجود مي‌آيد كه معيار پيشرفت خاصي برآورده شده باشد.

OnQueryCancel

توسط يك وظيفه يا كانتينر براي تعيين اين مسأله به وجود مي‌آيد كه آيا آن [OK] بايد اجرا را متوقف كند.

OnTaskFailed

توسط يك وظيفه هنگامي به وجود مي‌آيد كه ناموفق باشد.

OnVariableValueChanged

به‌طور اختياري توسط يك متغير هنگامي به وجود مي‌آيد كه مقدار آن تغيير كند.

OnWarning

توسط يك وظيفه يا كانتينر هنگامي به وجود مي‌آيد كه هشداري توليد شده باشد.

 

تأمين‌كنندگان Log

تأمين‌كنندگان Log ويژگي كاملاً جديد ديگري است كه مايكروسافت به بسته‌هاي Integration Services اضافه كرده است. همان‌گونه كه از نام آن‌ها حدس زده مي‌شود، تأمين‌كنندگان Integration Services Log به شما امكان افزودن امكان ثبت به بسته‌ها، كانتينرها و وظايف را مي‌دهند. Logging براي ثبت اطلاعات خطا يا ساير اطلاعات وضعيت يا زمان اجراي مهم استفاده مي‌شود. جدول 7-9 تأمين‌كنندگان Log را فهرست كرده است كه مايكروسافت همراه با SQL Server 2005 عرضه مي‌كند.

 

جدول 7-9 تأمين‌كنندگان Log

تأمين‌كننده log

شرح

تأمين كننده log

Text File

ورودي‌هاي log را در فايل‌هاي متني ASCII با استفاده از يك فرمت مقدار مجزا شده با كاما (CSV) با استفاده از يك توسعه فايل پيش‌فرض .log مي‌نويسد.

تأمين كننده log

SQL Profiler

داده رديابي SQL را با استفاده از يك توسعه فايل پيش‌فرض .trc در يك فايل رديابي مي‌نويسد.

تأمين كننده log

SQL Server

ورودي‌هاي log را در جدول sysdtslog90 در يك پايگاه داده SQL Server مي‌نويسد.

تأمين كننده log Windows Event

ورودي‌هاي را در Windows Application مي‌نويسد.

تأمين كننده log XML File

فايل‌هاي log را با استفاده از توسعه فايل پيش‌فرض .xml در يك فايل XML مي‌نويسد.

 

ابزارهاي Integration Services

در نتيجه اين معماري كاملاً جديد، مجموعه ابزار Integration Services كاملاً اصلاح شده و ظاهر كاملاً جديدي به خود گرفته است. در حالي كه شباهت‌هايي در برخي از ابزارهاي ساده‌تر وجود دارد (مثلاً، Integration Services Import/Export Wizard كه براي انجام عمليات انتقال داده ويژه استفاده مي‌شود)، ابزارهاي مهم‌تري نظير Integration Services Designer كاملاً متفاوت هستند. اين كه شما يك كارشناس DTS يا يك كاربر مبتدي آن باشيد، SQL Server 2005 Integration Services نيازمند اين است كه شما نحوه استفاده از اين ابزارهاي جديد را از زمينه بياموزيد. در اين بخش، مروري از ابزارها و برنامه‌هاي سودمند جديد Integration Services خواهيم داشت كه همراه با SQL Server 2005 هستند.

مجموعه ابزار SQL Server 2005 Integration Services به دو ناحيه اصلي تقسيم مي‌شود: ابزارهايي كه براي ايجاد و اجراي بسته‌هاي Integration Services استفاده مي‌شوند و ابزارهايي كه براي كار با بسته‌هاي DTS موجود استفاده مي‌گردند. ابزارهاي Integration Services Designer شامل Integration Services Import/Export Wizard اصلي و Designer پيشرفته‌تر هستند. همان‌گونه كه در ادامه خواهيد ديد، Integration Services Designer جداسازي معماري جريان كنترل و جريان داده را با فراهم كردن ويراستارهاي مجزا براي طراحي جريان كنترل و جريان داده بسته منعكس مي‌كند. Integration Services Designer يك ارايه گرافيكي از جريان كاري فراهم مي‌كند كه در داخل يك بسته Integration Services رخ مي‌دهد. اين Integration Services Designer جديد، ويژگي‌هاي سطح جهاني از قبيل كنترل منبع را براي تسهيل محيط‌هاي چند برنامه‌نويسه فراهم كرده است. هم‌چنين ابزارهاي توزيع و اشكال‌زدايي بسته تعبيه شده وجود دارند، از جمله توانايي تنظيم و كنترل نقاط شكست در يك بسته. هم‌چنين مي‌توانيد از Integration Services Designer براي كنترل اجراي يك بسته استفاده كند (پيشرفت كامل آن و نتيجه تبديلات و وظايف مجزا). ابزارهاي بسته Integration Services شامل يك Package Migration Wizard هستند كه براي انتقال بسته‌هاي SQL Server 7 و SQL Server 2000 به فرمت SQL Server 2005 جديد طراحي شده است. هم‌چنين يك Integration Services Package Installer Wizard وجود دارد كه برنامه‌هاي نصبي را براي بسته‌هاي Integration Services ايجاد مي‌كند و توزيع اين بسته‌ها را به سيستم‌هاي راه‌دور آسان‌تر مي‌كند. علاوه بر اين، يك برنامه سودمند Integration Services Package Excution وجود دارد كه به شما امكان اجراي بسته‌هاي Integration Services را از خط فرمان مي‌دهد؛ اين يك ابزار مفيد براي مشاركت انتقال Integration Services به عنوان بخشي از اسكريپت‌هاي مديريتي شماست.

 

ابزارهاي طراحي Integration Services

در اين‌جا نگاه دقيق‌تري به ابزارهاي طراحي Integration Services جديد مي‌اندازيم. ابتدا، Integration Services Import/Export Wizard را خواهيد ديد. سپس، نگاهي تفصيلي به Integration Services Designer جديد خواهيد داشت.

 

Integration Services Import/Export Wizard

Integration Services Import/Export Wizard اولين نقطه ورودي SQL Server 2005 در Integration Services جديد است. شبيه مشابه‌هاي قبلي آن در SQL Server 7 و SQL Server 2000، SQL Server 2005 Integration Services Import/Export Wizard مجموعه‌اي از كادرهاي محاوره‌اي را فراهم كرده است كه شما را از طريق فرآيند انتخاب منبع داده، مقصد و اشيايي كه منتقل خواهند شد، هدايت مي‌كند. Integration Services Import/Export Wizard هم‌چنين به شما اجازه مي‌دهد تا به‌طور اختياري بسته Integration Services را ذخيره و اجرا كنيد. مي‌توانيد Integration Services Import/Export Wizard را با انتخاب گزينه Integration Services Import/Export از منوي SQL Server يا با وارد كردن dtswizard در خط فرمان اجرا كنيد. ذخيره كردن بسته‌هاي توليد شده با Integration Services Import/Export Wizard و آن‌گاه ويرايش آن‌ها در Integration Services Designer، روشي عالي براي يادگيري مطالب بيشتر درباره Integration Services است، بخصوص اگر با Integration Services شروع كرده باشيد يا اگر از يكي از نگارش‌هاي قبلي به SQL Server 2005 Integration Services جديد منتقل شده باشيد. مي‌توانيد Integration Services Import/Export Wizard را در شكل 5-9 ببينيد.

 

شكل 5-9 Integration Services Import/Export Wizard- Data Source Selection

 

Integration Services Import/Export Wizard ابتدا شما را از طريق فرآيند انتخاب يك منبع داده هدايت مي‌كند. در بازشوي Data Source، تأمين كننده‌اي انتخاب كنيد كه مي‌خواهيد استفاده كنيد. بسته به تأمين كننده منتخب شما، گزينه‌هايي براي بقيه صفحه نمايش تغيير مي‌كنند. اگر Microsoft OLE DB Provider for SQL Server را انتخاب كنيد، صفحه‌اي شبيه شكل 5-9 را خواهيد ديد كه سپس سروري را انتخاب مي‌كنيد كه بايد به پايگاه داده مرتبط متصل شده و نوع تعيين هويتي كه بايد استفاده شود. كليك كردن Next شما را از طريق كادرهاي محاوره‌اي ويزارد بعدي هدايت مي‌كند. كادر محاوره‌اي بعدي به شما اجازه انتخاب مقصد داده را مي‌دهد كه لزوماً با كادر محاوره‌اي منبع داده يكسان است، به جز اين كه محل انتقال داده را تعريف مي‌كند.

 

توجه: در حالي كه SQL Server 2005 Integration Services Wizard همان عملكرد پايه Integration Services Import/Export Wizard را فراهم مي‌كند كه در SQL Server 7 و SQL Server 2000 وجود داشتند، نگارش جديد فاقد توانايي انجام نگاشت‌هاي داده اختصاصي و توانايي وارد كردن اسكريپت‌هاي تبديل داده اختصاصي است. براي استفاده از اين قابليت‌هاي پيشرفته‌تر، بايد از Integration Services Designer استفاده كنيد.

 

بعد از انتخاب منبع و مقصد داده، اين ويزارد به شما در مورد ذخيره اختياري و اجراي بسته Integration Services به شما اعلان مي‌كند. هنگامي كه هر وظيفه در بسته اجرا مي‌شود، پنجره انتقال به‌طور خودكار بهنگام شده و پيشرفت انتقال بسته Integration Services را نشان مي‌دهد. هنگامي كه بسته Integration Services به‌طور موفق اجرا مي‌شود، Integration Services Import/Export Wizard كادر محاوره‌اي را نمايش خواهد داد كه در شكل 6-9 نشان داده شده است.

 

Integration Services Designer

در حالي كه Integration Services Import/Export Wizard براي وظايف انتقال‌هاي ويژه ساده مفيد است، اقتباس، تبديل و بارگذاري(ETL) نيازي به تأكيد و تواني بيشتر از آن چيزي دارند كه ويزارد Integration Services ارايه مي‌دهد. وظايف ETL، طبق طبيعتشان بيش از انتقال‌هاي داده ساده از يك مقصد ديگر هستند. در عوض، آن‌ها اغلب داده را از چندين منبع تركيب كرده، داده را دستكاري نموده، مقادير را به ستون‌هاي جديد نگاشت كرده، ستون‌ها را از مقادير محاسباتي ايجاد نموده و انواع وظايف پاكسازي و تصحيح داده را فراهم مي‌كنند. اين قابليت‌هاي پر تقاضاتر خارج از حوزه Integration Services Import/Export Wizard ساده هستند. اينجا محلي است كه Integration Services Designer مجموعه‌اي از ابزارهاي گرافيكي است كه مي‌توانيد از آن براي ايجاد راه‌حل‌هاي تبديل و انتقال داده قوي استفاده نماييد.

شكل 6-9 Package Execution - Integration Services Import/Export Wizard

 

Integration Services Designer از Business Intelligence Development Studio با انتخاب File | New | Project براي باز كردن كادر محاوره‌اي New Project شروع مي‌شود. سپس براي ايجاد يك پروژه Integration Services جديد، Business Intelligence Projects را از ليست Project Types انتخاب كرده و سپس Data Transformation Project را از ليست قالب‌ها برگزينيد، همان‌گونه كه در شكل 7-9 نشان داده شده است.

 

توجه: در مورد اين واقعيت كه Integration Services Designer از Business Intelligence Development Studio شروع مي‌شود، تعجب نكنيد. اين مسأله تنها محدود به پروژه‌هاي Analysis Services نيست. Integration Services Designer و پروژه‌هاي ساخته شده در Business Intelligence Development Studio كاملاً قادر به كار كردن با انواع داده رابطه‌اي و غيره هستند و محدود به داده Analysis Service نيستند.

شكل 7-9 باز كردن يك پروژه تبديل داده

 

پس از ايجاد پروژه، مي‌توانيد Integration Services Designer را با كليك راست روي Packages در پنجره Solution Explorer كه در بخش سمت راست صفحه نمايش نشان داده شده است، باز كنيد. سپس گزينه New Package را براي شروع Integration Services Designer انتخاب كنيد. هنگامي كه Integration Services Designer در ابتدا شروع مي‌شود، يك سطح خالي ارايه مي‌شود كه چندان شبيه Integration Services Designer قبل نيست، بنابراين شروع مي‌تواند كمي چالش‌آميز باشد.

 

Control Flow Designer جديد

در حالي كه مي‌توانيد از Integration Services Designer به دو روش مختلف استفاده كنيد، ساده‌ترين روش احتمالاً شروع با برگه Control Flow و سپس باز كردن جعبه ابزار Control Flow است. بعد از نمايش جعبه ابزار، روي وظيفه Data Flow كليك كرده و آن را به سطح طراحي بكشيد. سطح Integration Services Designer Control Flow همان‌گونه كه در شكل 8-9 نشان داده شده است، ظاهر مي‌شود.

 

شكل 8-9 Control Flow Designer

 

در اينجا، بسته Integration Services بسيار ساده است، زيرا شامل يك وظيفه Data Flow است. بديهي است كه مي‌توانيد با افزودن وظايف اضافي از جعبه ابزار Control Flow و حتي سازمان‌دهي چندين وظيفه مرتبط در كانتينرها، اين بسته را بسيار پيچيده‌تر كنيد.

 

Data Flow Designer جديد

 در اين لحظه، بسته مي‌داند كه قصد دارد يك عمل انتقال داده را انجام دهد، ولي نمي‌داند كه چه چيزي را انتقال دهد يا اين كه داده از كجا ارسال مي‌شود. بعد از افزودن وظيفه Data Flow، مرحله بعد تعريف جريان‌هاي داده واقعي است. براي تعريف جريان‌هاي داده، روي وظيفه Data Flow دابل كليك كنيد تا برگه Data Flow نمايش داده شود. در ابتدا، برگه Data Flow خالي خواهد بود. براي افزودن اتصالات منبع و مقصد داده، جعبه ابزار Data Flow را در سمت چپ IDE باز كرده و يك آيتم جريان داده OLE DB Source و يك آيتم جريان داده OLE DB Destionation را كشيده و در سطح Data Flow Designer بيندازيد. علاوه بر اين، مي‌توانيد يك Flat File Destination را اضافه كنيد كه مي‌تواند براي ارسال هر رديف خطا به خروجي يك فايل ASCII log استفاده شود.

حال كه بيان شد كه Integration Services داده را از يك منبع OLE DB به مقصد OLE DB ديگري منتقل مي‌كند، ولي باز هم بايد اتصالات منبع و مقصد را تعريف كنيد. علاوه بر اين، بايد اتصالي را براي جريان خطاي Flat File تنظيم كنيد. اساساً هر منبع يا مقصد جريان داده نياز به يك اتصال همراه دارد كه لزوماً جزييات خاص را درباره نقطه انتهاي اتصال فراهم مي‌كند. به دليل اين كه اين مثال از سه آيتم Data Flow استفاده مي‌كند، سه اتصال متفاوت مورد نياز است. دو اتصال OLE DB و يك اتصال Flat File. براي تعريف اين اتصالات، مي‌توانيد در پنجره Connection پايين Integration Services Designer نشان داده شده است، كليك راست كنيد كه يك منوي بازشو را نمايش مي‌دهد كه به شما امكان انتخاب نوع اتصال مورد نظر براي ايجاد را مي‌دهد. انتخاب نوع اتصال از منوي بازشو موجب نمايش Connection Manager مي‌شود. در شكل 9-9، مي‌توانيد ببينيد كه براي ايجاد اتصال OLE DB جديد استفاده مي‌شود.

 

شكل 9-9 Connection Manager

 

پس از ايجاد اتصالات، بايد هر اتصال را به آيتم جريان داده مناسبي مرتبط كنيد. براي لينك كردن اتصال به يك آيتم جريان داده، روي آيتم جريان داده كليك راست كنيد، گزينه Edit يا Advanced Edit را از منوي زمينه انتخاب كرده و سپس اتصالي را از ليست بازشوي نمايش داده شده در كادر محاوره‌اي Edit برگزينيد. هنگام تعريف هر اتصال، نگاشت ستون و ساير تبديلاتي را كه انجام خواهند شد، مشخص كنيد. پس از تكميل اين پيكربندي، برگه Integration Services Designer Data Flow شبيه شكل 10-9 ظاهر مي‌شود.

 

شكل 10-9 Data Flow Designer

 

در وسط برگه Data Flow Designer مي‌توانيد منبع OLE DB، مقصد OLE DB و آيتم‌هاي جريان داده Flat File Destination را ببينيد. يك جريان داده فلشي سبز مستقيم، منبع OLE DB را به مقصد OLE DB متصل كرده و يك جريان خطاي فلش قرمز خميده، منبع OLE DB را به مقصد Flat File متصل مي‌كند. اتصالات براي هر يك از اين آيتم‌ها در پنجره Connections در پايين صفحه نمايش نشان داده شده‌اند.

 

ارايه گرافيكي اجراي بسته

هنگامي كه تمام اتصالات و جريانات داده تعريف شدند، بسته مي‌تواند با كليك كردن فلش سبز رنگ در نوار ابزار يا با انتخاب گزينه Start از منوي Debug اجرا شود. قبل از اجراي بسته، مي‌توانيد به‌طور اختياري نقاط شكست را با انتخاب يك آيتم به همراه گزينه New Breakpoint از منوي Debug در بسته تعريف كنيد. هنگامي كه بسته اجرا شد، پنجره‌هاي Watch و Call Stack به‌طور خودكار باز شده و Data Flow Item در حال اجرا به رنگ سبز تغيير مي‌كند. مي‌توانيد نتيجه اجراي بسته نمونه را در شكل 11-9 ببينيد.

 

شكل 11-9 اجراي بسته در Designer

 

Package Explorer جديد

ويژگي جديد ديگر در Integration Services Designer، Package Explorer است. Package Explorer يك نماي درختي سلسله مراتبي از Integration Services Package فراهم مي‌كند كه در طراح نمايش داده مي‌شود. Package Explorer در شكل 12-9 نشان داده شده است.

شكل 12-9 Package Explorer

 

در سطح بالا، مي‌توانيد نام بسته را ببينيد و هر يك از اجزاي بسته در زيربسته ليست شده‌اند. كليك كردن علامت بعلاوه در جلوي هر جزء، موجب نمايش آيتم‌هاي واقعي مي‌شود. توجه به اين نكته حايز اهميت است كه Package Explorer تنها ابزاري براي مشاهده نيست. از نماي Explorer، مي‌توانيد آيتم‌ها را حذف كرده و خصوصيات آن‌ها را ويرايش كنيد. هرچند، نمي‌توانيد آيتم‌هاي جديدي را اضافه كنيد. اين كار تنها مي‌تواند در سطح طراح انجام شود.

 

پيكربندي

ويژگي پيكربندي‌هاي Integration Services جديد براي ساده‌تر شدن توزيع بسته‌هاي Integration Services طراحي شد. ويژگي پيكربندي‌هاي جديد به شما امكان مي‌دهد تا به‌طور پويا يك بسته را براي اجرا در محيطي متفاوت بهنگام كنيد. مثلاً، اتصالات نياز به رشته‌هاي اتصال دارند و اين رشته‌هاي اتصال، اغلب تنها براي محيط معيني مناسب هستند. پيكربندي‌ها به شما امكان مي‌دهند تا اين انواع مقادير خاص سايت/ سرور را هنگام توزيع بسته، به‌طور پويا بهنگام كنيد. مي‌توانيد پيكربندي‌ها را با استفاده از Configuration Wizard ايجاد كنيد. مي‌توانيد Configuration Wizard را با استفاده از گزينه منوي Integration Services | Configurations براي نمايش كادر محاوره‌اي Package Configuration Organization شروع كنيد، كه مي‌توانيد روي Add براي شروع Configuration Wizard كليك كنيد. مي‌توانيد Configuration Wizard را در شكل 13-9 ببينيد.

 

شكل 13-9 Configuration Wizard

 

هرچند اين بخش قادر به تماس با تنها بخشي از قابليت موجود در Integration Services جديد SQL Server 2005 است، خوشبختانه اين بخش احساسي براي نحوه كار Integration Services Designer به شما مي‌دهد.

 

ابزارهاي بسته‌بندي Integration Services

آخرين بخش اين فصل، برخي از ساير برنامه‌هاي سودمند مديريت بسته را به شما معرفي خواهند كرد كه توسط SQL Server 2005 فراهم شده‌اند. يك Package Migration Wizard براي كمك به شما در تبديل بسته‌هاي Integration Services موجود به فرمت بسته جديد SQL Server 2005 فراهم شده است. هم‌چنين يك برنامه Packege Management وجود دارد كه به شما امكان كار كردن با بسته‌هاي Integration Services موجود را مي‌دهد. علاوه بر اين، يك ابزار خط فرمان جديد به شما امكان اجراي بسته‌ها را از خط فرمان مي‌دهد.

 

Package Migration Wizard

تغيير معماري كامل و سازگاري با .NET Framework را در نظر بگيريد و نبايد تعجب كنيد كه بسته‌هاي DTS كه براي SQL Server 7 و SQL Server 2000 ساخته شده‌اند، بايد قبل از امكان اصلاح به فرمت جديد منتقل شوند.

 

توجه: بسته‌هاي DTS موجود كه براي SQL Server 2000 ساخته مي‌شوند، مي‌توانند در SQL Server 2005 اجرا شوند. آن‌ها هم‌چنين مي‌توانند در راه‌حل‌هاي بسته SQL Server 2005 Integration Services جديد قرار گيرند. آن‌ها نمي‌توانند اصلاح شوند، مگر اينكه ابتدا به فرمت جديد منتقل شوند.

 

SQL Server 2005 Package Migration Wizard بسته‌هاي Integration Services موجود را به فرمت بسته SQL Server 2005 Integration Services منتقل مي‌كند. Package Migration Wizard تلاش مي‌كند تا عناصر بسته Integration Services موجود نظير وظايف، تقدم، الزامات و متغيرها را گرفته و آن‌ها را به آيتم‌هاي بسته SQL Server 2005 معادل تبديل كند. Package Migration Wizard مي‌تواند اجزاي بسته DTS تأمين شده مايكروسافت را مديريت كند، ولي نمي‌تواند وظايف اختصاصي را تبديل كند. وظايف اختصاصي ساختار قديمي خود آن‌ها را نگهداري كرده و به عنوان زيربسته‌اي كپسوله مي‌كنند كه به بسته منتقل شده لينك مي‌شود. اسكريپت‌ها مي‌توانند بحث مسأله‌دار ديگري براي Package Migration Wizard باشند. در حالي كه بيشتر اسكريپت‌هاي تبديل ActiveX مي‌توانند به وظيفه ActiceX Script جديد تبديل شوند، اسكريپت‌هاي موجودي كه به مدل شيئي DTS قديمي مراجعه مي‌كنند، نمي‌توانند تبديل شوند.

 

برنامه سودمند Integration Services Packege Management

ابزار خط فرمان ديگري كه توسط SQL Server 2005 Integration Services فراهم شده است، برنامه سودمند Packege Management است. مي‌توانيد برنامه Packege Management را با وارد كردن dtutil در خط فرمان اجرا كنيد. ابزار dtutil به شما امكان دستيابي به بسته‌هايي را مي‌دهد كه در پايگاه داده SQL Server msdb ذخيره مي‌شوند. هم‌چنين مي‌تواند براي كپي، حذف و امضاي بسته‌هاي موجود استفاده شود.

 

برنامه‌هاي سودمند Integration Services Package Execution

دو برنامه اضافي مي‌توانند براي اجراي بسته‌ها استفاده شوند: dtexec و dtexecui. همان‌گونه كه از نام آن‌ها حدس زده مي‌شود، ابزار dtexec از خط فرمان اجرا مي‌شود، در حالي كه ابزار dtexecui يك رابط كاربر گرافيكي را نمايش مي‌دهد كه به شما امكان بارگذاري و اجراي بسته‌هاي Integration Services را مي‌دهد. يك جنبه قابل توجه ابزار dtexec اين واقعيت است كه براي امنيت بهبود يافته، مي‌تواند با استفاده از آرگومان‌هاي رمزگذاري شده اجرا شود. ابزار dtexecui مي‌تواند براي توليد يك فايل متني استفاده شود كه حاوي فرامين و پارامترهاي مورد نياز براي اجراي ابزار خط فرمان dtexec هستند (از جمله گزينه‌اي براي توليد آرگومان‌هاي رمزگذاري شده). مي‌توانيد ابزار dtexecui را در شكل 14-9 ببينيد.

 

شكل 14-9 ابزار dtexecui

 



[1]- Data Transformation Services

[2]- Bulk Copy Program

[3]- Data Transformation Pipeline

[4]- Data Transformation Runtime

[5]- Package

[6]- Container

[7]- Immediate Mode

[8]- Project Mode