This blog is subject the DISCLAIMER below.

Saturday, August 15, 2009

Integrating SSIS with C# to deliver very scalable Data-Driven Solution

نوضح في هذه المقاله استخدام ال SSIS لبناء C# application to get very scalable data-driven solution و كيفيه ارتباط ال C# بالـ SSIS

ما هم ال SSIS ؟؟ كيفيه الحصول عليه ؟؟ وماهي مميزاته؟؟ وفيما يستخدم اكثر؟؟

اولا SSIS تعني SQL Server Integration Services وهى احدى منتجات ميكروسوفت ويأتي مع جميع نسخ ال SQL Server ما عدا ال Express كان يسمى فيما سبق DTS لكن SSIS يعتبر منتج جديد وليس تحديثا من ال DTS

هي اداه قامت ميكروسوفت بتطويره و اخراجه للسوق عام 2007 وتهدف الى نقل البيانات من اكثر من Data Repository الى Data Repository اخر مثلا نقل البيانات من ملف نصي، ملف Excel او قاعاده بيانات SQL or Access الى جدول في قاعده بيانات في ال SQL Server دون الحاجه لوجود SQL Server ولا يجب مصدر البيانات او وصول البيانات SQL Server بأختصار يكمن استخدمها لنقل البيانات من ملف نصي الى قاعده بيانات Oracle تعتبر ال SSIS اداه ETL (Extract, Transform, and Load) اي انها تقوم بأخد البيانات من المصادر تحسين البيانات بشكل وتنظيمه وبعد هذا نقلها الى نقطه الوصول.


تستخدم في تطوير Business Intelligence Applications حيث ان هذه ال Applications تعتمد على مستودعات بيانات ضخمة Huge Data Repository تسمى Data Warehouse ويتم تطوير ال Data Warehouse بأخذ البيانات من المصادر المختلفه وتكوين ال Data Warehouse وكما قلنا ان ال SSIS من يقوم بعمل هذا.
من احدى مميزات ال SSIS انه يمكن تحميل البيانات من مصادر مختلفه و وضعها في DataReader في بيئه ال .NET ويمكن الدمج بين C# Application و SSIS Package و تعتبر ال SSIS Package هي الناتج من عمل ال SSIS كما سوف نتعلم في هذه المقاله.
تطبيق :
سنحاول في هذا التطبيق فصل ال Developer عن مركز تواجد البيانات حيث انه من الممكن ان يوجد اكتر من مركز للبيانات ولكن نريد ان نعرض هذه البيانات في Application دون الحاجه للتعديل في أي شيء، وبدلاً من بناء اكثر من اداه لهذا الغرض ، لدينا SSIS لتقدم لنا حل الدمج بين ال Application و ال SSIS .

اولا نبدأ بعمل ال SSIS Package وسوف نقوم الان خطوه بخطوه بكيفيه بنائها


1- افتح Microsoft Visual Studio 2008 من القائمه اختار File -> New->Project من Project types اختار Business intelligence projects ثم Integration Services Project و نسميه DataCollector





2- نلاحظ وجود SSIS Packages في ال Server Explorer نسميه DataCollectorPackage.dtsx ونسحب Data Flow Task من شريط الادوات ونضعه في Control Flow كما هو مبين




3- ننقر مرتين على ال Data Flow Task لكي نبني تحميل الData من اكتر من مصدر كما هو في حالتنا تحميله من Excel File و Text File و قاعده بيانات ووضعها في Data Reader كما سنشاهد تباعا

4- نسحب من شريط الادوات جزء Data Flow Sources 3 مصادر للبيانات Excel Source و ADO.NET Source و Flat File Source كما هو مبين


نلاحظ وجود علامه x حمراء تدل على وجود خطأ ما وهذا ناتج على عدم وجود اتصال هذه المصادر بمصادر بيانات حقيقيه وهو ما سنحاول التخلص من هذه العلامه الحمراء الامر الذي لن يستغرق غير بضع ثوان.


5- نضغط بالزر الايمن للماوس على Excel Source لربطه بملف Excel واختار Edit يظهرلك Dialog اختار New لعمل Connection Manager لهذا الملف كما هو مبين


بعد ذلك Preview للتأكد من صحة البيانات و اختار بعد ذلك OK

6- كرر عد ذلك هذه العمليه مع باقي مصادر البيانات.

7- نسحب من شريط الادوات جزء ال Data Transformation مايسمى بال Data Conversion والسبب هنا ان البيانات تأتي من اكتر من مصدر حيث ال String من قاعده البيانات يختلف مع الملف النصي مع ال Excel Sheet لذا يجب وهذا الزام ان نوحد نوع البيانات و طولها. اسحب السهم الاخضر من كل مصدر الى واحد من ال Data Conversion

8- اضغط بالازر اليمن للماوس على واحد من ال Data Conversion حيث سوف نقوم بتكرار هذه العمليه مع الباقي وبعد ذلك Edit


وبعد ذلك OK . لا تنس ان تكرر هذه العمليه مع الباقي!!

9- اسحب من شريط الادوات جزء ال Data Transformation مايسمى بال Union All وواضح من الاسم انه يجمع اكتر من شكل للبيانات في وحده واحده. كل ما عليك ان تسحب كل الاسهم الخارجه من ال Data Conversion ووادخالها في ال Union All

10- اسحب من شريط الادوات جزء ال Data Transformation مايسمى بال Sort لترتيب البيانات المجمعه من اكتر من مصدر البيانات


11- اسحب من شريط الادوات جزء ال Data Flow Destination مايسمى بال Data Reader Destination ونسحب السهم الخارج من Sort لل Data Reader Destination ونسمي هذا DataReaderDest

12- لقد انتهينا بالفعل وال Data Flow يجب ان يكون مثل هذا


13- اضغط F5 لبناء ال Package يجب ان تظهرك جميع البيانات مرتبه (ستجد الملفات مدمجه مع هذا المقال) ان وجد خطأ لا تتردد في سوألي.

14- حان الوقت لبناء ال C# Application وهذا سوف يأخد وقت صغير و هو كل ما عليك فعله اضافه مشروع من نوع C# Windows Forms Application وادراج DataGridView و Button من شريط الادوات


15- من القائمه الرئيسيه Project ثم Add reference لهذه الملفات

16- نقرتين على ال Button لتنفيذ ال Event Handler لل Click ونكتب هذه الاسطر


مؤكد ان هذه الاسطر لكن لنشرحها أيضاً ، بنظره مبدأيه هنا نعتبر ال Package مثل قاعده البيانات نأخد منها البيانات لذا يجب توافر شيئين مهمين اولا ال Connection String و Command

بالنسبه لل Connection String يمكن الحصول على ال Package بأكثر من طريقه الاختصار هنا نحصل عليها وهي موجوده في ال HDD لذا في ال Connection String كلمة /FILE نأتي لل Command ونعطيه الشئ الذي يحصل على البيانات منه وهو ال Data Reader Destination وكما سمناه في ال Package DataReaderDest و ننفذ هذا ال Command ، الناتج سيعود بكائن من النوعReader لذلك اخذنا instance من IDataReader والباقي هو تحميل هذه البيانات الي ال DataGridView كما هو موضح


والسلام عليكم ورحمه الله وبركاته

1 comment:

Ahmed Essawy said...

good article and Arabic style :) go on Ramy