• 0
مهند عبدالحفيظ

البديل الأمثل لقواعد بيانات Access

سؤال

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

منذ بدأت البرمجة وانا استخدم قواعد بيانات Access في برامجي الصغيرة فهي الملاذ السهل والامن لكثير منا رغم النواقص العديدة بها مقارنة ب SQL Server ولكنها كانت المفضلة لدي عندما أريد قاعدة بيانات محلية لمستخدم واحد Local DB . ولكن منذ أن تعرفت على SQL Server Compact Edition 3.5 المدمجة مع Visual Studio 2008 قلت وداعا لصديقي القديم Access . وأنصح جميع من يريد استخدام قاعدة بيانات Access لبرنامجه استبدالها فورا ب SQL Server CE 3.5 .

اما الأسباب فسأذكر خصائصها باختصار ولمن يريد التوسع فليبحر في MSDN .

  • جميع أدوات انشاء قاعدة البيانات وتصميمها موجودة في Visual Studio فلا داعي لأي برنامج اضافي ولاداعي للتنقل بين البرامج .
  • ملف واحد ( امتدادها الأصلي sdf. ) مثل الاكسس يمكن نسخه بسهولة وارفاقه مع حزمة التثبيت .
  • متطلبات تشغيلها بسيطة عبارة عنة حزمة ملفات runtime لايتجاوز حجمها 2ميغا بايت و يقوم برنامج الاعداد بتجهيزها نيابة عنك .
  • يمكن أن يصل حجم ملف قاعدة البيانات حتى 4 جيجا ... واعتقد انه حجم أكثر من كافي للتطبيقات المحلية.
  • من المزايا المهمة التي تنفرد فيها عن Access دعمها القويADO.NET Entity وبالتالي دعم تعبيرات LINQ (البديل المفضل لدي للتعامل مع البيانات ) حيث يتم عمل فئاتها بسهولة عن طريق اداة SQLMetal ( لايمكن عمل الفئات عن طريق O/R Designer )
  • ميزة أخرى مهمة امكانية التعامل معها مباشرة من .NET Framework حيث يوجد النطاق System.Data.SqlServerCe وبه جميع الكائنات اللازمة ( SqlCeConnection,SqlCeCommand,SqlCeDataAdapter ...الخ )
  • عند التشغيل فانها تستخدم نفس ال thread للبرنامج وليس كخدمة محلية أو خارجية Service مما يعطيها أفضلية بالاداء متفوقة على بقية قواعد البيانات المحلية وطبعا الخارجية .
  • لمستخدمي SQL Server يمكن استخدام بيئة التطويرنفسها لتعديل كائنات SQL SERVER CE .
  • تعمل مع .Net Framework Compact Edition المخصص لأجهزة الموبايل والأجهزة الكفية .
  • الكائن الجديد SqlCeResultSet وهو حل وسط بين DataSet و DataReader وينفع ك DataSource لكائنات البيانات .
  • تدعم Transactions ولكن لا تدعم المتداخلة منها Nested .

عيوبها :

  • لاتدعم Stored Procedure ولا Views
  • كما ذكرت هي قاعدة بيانات محلية فلا يوجد بها دعم قوي لتعدد المستخدمين مع انه متاح بها حاليا
  • لاتقبل بيئة O/R Designer من اجل فئات LINQ TO SQL .

لم اجد عيوب أخرى فهي مثالية كقاعدة بيانات محلية وحسب MSDN فهي قاعدة البيانات المفضلة للبيانات المحلية واقتبس :

The preferred local database for client applications is SQL Server Compact 3.5

هذه خلاصة لما لمسته خلال تعاملي مع SQL Server CE و ربما هناك مزايا أو عيوب أخرى لم اتنبه اليها .

وسأذكر في مواضيع أخرى الجانب العملي للتعامل مع SQL Server CE .

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

14 إجابة على هذا السؤال .

  • 0

اخي الكريم

هل له واجهة استخدام خاصة ؟ يعني كيف أستطيع العمل عليه ( إنشاء الجداول و الاستعلامات و العلاقات )

و شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
اخي الكريم

هل له واجهة استخدام خاصة ؟ يعني كيف أستطيع العمل عليه ( إنشاء الجداول و الاستعلامات و العلاقات )

و شكرا

انتظر انا ايضا الاجابة

جزاك الله خيرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
اخي الكريم

هل له واجهة استخدام خاصة ؟ يعني كيف أستطيع العمل عليه ( إنشاء الجداول و الاستعلامات و العلاقات )

و شكرا

قواعد بيانات SQL Server CE مدمجة مع Visual Basic 2008 ويمكن اضافة قاعدة بيانات لمشروعك بسهولة كالتالي :

  1. من قائمة Project اختر Add New Item ثم اختر Local Database وستجد اسفل اسمها DataBase1.sdf غيره اذا اردت . ثم مباشرة يظهر لك معالج الاتصال بقاعدة بيانات DataSource Configuration Wizard حيث يقوم بمساعدتك بانشاء DataSet لقاعدة البيانات الجديد وطبعا قاعدة بيناناتك فارغة فلايمكن انشاء dataset ولذلك اضغط Finish ويمكنك تشغيل المعالج لاحقا من قائمة Data.
  2. الان اذا لم تكن نافذة Server Explorer ظاهرة لديك فاذهب إلى View واخترها لتظهر وستجد قاعدة البيانات الجديدة قد اضيفت للنافذة وجنبها اشارة X حمراء.
  3. لإضافة الجداول اضغط على اشارة + بجانب اسم القاعدة في server explorer وسيظهر لك مجلد Tables اضغط عليه باليمين واختر Create Table فتظهر نافذة لتدخل بها انواع الاعمدة .
  4. لحذف الجداول اضغط على مجلد Tables باليمين ثم اختر Drop Table .
  5. لتصميم استعلام اضغط باليمين على Tables ثم New Query ولكن لاحظ أنه هنا لايتم حفظ الاستعلامات مثل Access انما بعد أن تقوم بانشاء الاستعلام المهم هو جملة SQL الناتجة فاستعلامات Access عبارة عن جمل SQL مخزنة في قاعدة البينات وانت يمكنك استخدام SQL الناتجة من استعلامك مباشرة في برنامجك.
  6. لانشاء العلاقات اضغط على اسم أي جدول باليمين ثم اختر Table Properties ثم اختر Add relation .
  7. في مشروعك ستجد ملف قاعدة البيانات في solution explorer ايضا اختاره ثم من الخصائص غير الخاصية Copy Tp Output إلى Do not Copy

تم تعديل بواسطه مهند عبدالحفيظ
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أشكرك

وفيت وكفيت

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك على هذا الشرح

أنا بالفعل بدأت باستخدام هذا النوع من قواعد البيانات لبناء التطبيقات

ولكن المشاكل التي واجهتا هي في كيفية اجراء العمليات الخاصة بالنسخ الاحتياطي والاسترجاع والضغط باستخدام تعليمات sql server

فهل هناك تعليمات خاصة بهذا النوع من قواعد البيانات لحل تلك المشاكل.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
بارك الله فيك على هذا الشرح

أنا بالفعل بدأت باستخدام هذا النوع من قواعد البيانات لبناء التطبيقات

ولكن المشاكل التي واجهتا هي في كيفية اجراء العمليات الخاصة بالنسخ الاحتياطي والاسترجاع والضغط باستخدام تعليمات SQL server

فهل هناك تعليمات خاصة بهذا النوع من قواعد البيانات لحل تلك المشاكل.

قواعد بيانات SQL Server CE مكونة من ملف واحد فقط .. يمكنه نسخه كأي ملف اخر لعمل نسخة احتياطية .وثم استرجاعها

اما الضغط فباستخدام امر compact مثل الاكسس حيث يمكنك ايضا نسخ قاعدة البيانات و تغيير خصائصها بواسطة هذا الأمر

dim myEngine as new  System.Data.SqlServerCe.SqlCeEngine("Data Surce=mydb.sdf;password=1234")
myengine.compact(Nothing) 'ضغط قاعدة البيانات الحالية
myengine.compact("DataSource=; paswword=abcd") 'ضغط مع تغيرر الباسوورد

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بارك الله فيك وشكراً جزيلاً على المعلومة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم ورحمة الله أخي مهند عبدالحفيظ

أريد أن ألفت إنتباهك لنقطة مهمة جداُ وهي أن المنتج Microsoft SQL Server CE Edition والمقصود بالحرفين CE هو Compact Edition وهذه الإصدارة خاصة بالأجهزة الكفية PDA أو Smart Phone والتي تعمل بنظام Windows Mobile أما البديل لقواعد بيانات Access فهو SQL Server Express Edition بالنسبة للتطبيقات التي تعمل على نظام Windows العادي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
السلام عليكم ورحمة الله أخي مهند عبدالحفيظ

أريد أن ألفت إنتباهك لنقطة مهمة جداُ وهي أن المنتج Microsoft SQL Server CE Edition والمقصود بالحرفين CE هو Compact Edition وهذه الإصدارة خاصة بالأجهزة الكفية PDA أو Smart Phone والتي تعمل بنظام Windows Mobile أما البديل لقواعد بيانات Access فهو SQL Server Express Edition بالنسبة للتطبيقات التي تعمل على نظام Windows العادي

كلامك صحيح بالنسبة للنسخة السابقة 3.0 اما النسخة الحالية فهي عبارة عن تطوير ة لنسخة SQL Server Mobile 3.0 لكي تعمل على الأجهزة العادية و الويب ص فهي مثالية للتطبيقات التي لا تتطلب تعاملا متقدما مع البيانات . وانا اجدها مثالية للتطبيقات الصغيرة وحتى المتوسطة لأنها لاتحتاج للتنصيب بشكل مستقل على الجهاز مثل Access انسخ الملف فقط . وايضا تأتي جاهزة مع VS 2008 وايضا مجانية للتحميل من موقع مايكروسوفت .

اما Express في اقوى ومجانية وتدعم مزايا CE كلها لكنها بحاجة للتنصيب كمنصة مستقلة على الجهاز ليمكن العمل معها و ايضا ليست ببساطة اكسس و CE (جدوال وعلاقات فقط)

وتاكيدا لصحة كلامي ... نأخذ رأي مصممي مايكروسوفت ..من الموقع

http://www.microsoft.com/Sqlserver/2008/en/us/compact.aspx

واقتبس منه

Microsoft SQL Server Compact is a free SQL Server embedded database ideal for building standalone and occasionally connected applications for mobile devices, desktops, and Web clients.

تم تعديل بواسطه مهند عبدالحفيظ
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم أخي

كلامك صحيح بالنسبة للنسخة السابقة 3.0 اما النسخة الحالية فهي عبارة عن تطوير ة لنسخة SQL Server Mobile 3.0 لكي تعمل على الأجهزة العادية و الويب ص فهي مثالية للتطبيقات التي لا تتطلب تعاملا متقدما مع البيانات . وانا اجدها مثالية للتطبيقات الصغيرة وحتى المتوسطة لأنها لاتحتاج للتنصيب بشكل مستقل على الجهاز مثل Access انسخ الملف فقط . وايضا تأتي جاهزة مع VS 2008 وايضا مجانية للتحميل من موقع مايكروسوفت .

لم تفهم قصدي، أنا لا أقصد أنها لا تعمل إلا مع الأجهزة الكفية ، فعلاً النسخة الأخيرة تعمل مع كل أنواع التطبيقات ولكن أنا أنظر إليها من ناحية المفهوم ، عندما أنتجت مايكروسوفت مكتبة الـ MSDE كانت تقول أنها البديل الأمثل للأكسس لأنها تعمل بنفس محرك قاعدة بيانات SQL Server وفي الإصدارات الأخيرة من الـ Office تم الإستغناء عنها وكان البديل هو الـ SQL Express

وبالمناسبة أخي يمكن إستخدام ملفات xml عادية كقاعدة بيانات وعندها لا أحتاج حتى للملفات التي تساعد في عملية التشغيل

بالنسبة لمسألة التنصيب المستقل لبرنامج Microsoft Office عند إعتماد قاعدة بيانات أكسس في التطبيق، يمكن لبرامج الدوت نت أن تتعامل مع قاعدة بيانات أكسس دون تنصيب الأكسس في الجهاز وهذا منذ الإصدارة الأولى Microsoft.NET 1.0 باستخدام المكتبة Microsoft Data Access Component.

اما Express في اقوى ومجانية وتدعم مزايا CE كلها لكنها بحاجة للتنصيب كمنصة مستقلة على الجهاز ليمكن العمل معها و ايضا ليست ببساطة اكسس و CE (جدوال وعلاقات فقط)

يمكنك أخي تنصيب الـ SQL Server Express مع نفس ملف التنصيب الخاص بالتطبيق وهذه الخاصية متوفرة منذ الإصدارة VS.NET 2005 بحيث لا يحتاج المستخدم الى Management Studio للتعامل مع قاعدة البيانات ويمكنك عمل الـ Attach بالنسبة لقاعدة البيانات في أثناء عملية التنصيب للبرنامج دون أن يحس المستخدم.

وتاكيدا لصحة كلامي ... نأخذ رأي مصممي مايكروسوفت ..من الموقع

http://www.microsoft.com/Sqlserver/2008/en/us/compact.aspx

ياأخي كلامك كله صحيح ولم أشكك في صحته :) فقط أحببت أن أشارك بالمعلومة.

Microsoft SQL Server Compact is a free SQL Server embedded database ideal for building standalone and occasionally connected applications for mobile devices, desktops, and Web clients

بالنسبة لآراء مصممي مايكروسوفت أو آراء الخبراء الأجانب بصورة عامة ، أنا شخصياً أتبعها في النواحي الفنية البحتة فقط على سبيل المثال طريقة كتابة الكود ، طريقة الإتصال بقاعدة البيانات وهكذا ، أما بالنسبة لإختيار التقنية التي يجب أن أستخدمها أو قاعدة البيانات التي يجب أن أستخدمها هنا أعتمد في إختياري على العوامل الخاصة بالبيئة التي أعمل لها ، فمثلاً لا يوجد شك بأن قواعد بيانات Oracle هي الأفضل على الإطلاق وإذا قمت بإتباع هذا الكلام سأتأخر في تسليم العمل وسيحتاج الزبون إلى توظيف مدير قاعدة بيانات مختص براتب كبير لمتابعة النسخ الإحتياطي والتأكد من قاعدة البيانات سليمة ناهيك عن مشاكل الأوراكل التي لا تحصى ولا تعد وشح الدعم الفني علماً بأنه يمكنك أن تجد أكثر من 10 حلول لرسالة خطأ تحمل رقم واحد .

وفقك الله أخي موضوعك مميز

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

شكرا جزيلا لمشاركتك وتوضيحك .....

النقاش يغني الموضوع ... ويمكن القارئ ويمكنني من ملاحظة امور لم تتضح لي عند كتابة الموضوع .

انا احببت ان ادعم التوجه ل CE نظرا لبساطتها وكونها مدمجة مع VS وبشكل اساسي لدعمها ل LINQ to SQL لأنني ايضا ادعم هذا التوجه وانا شخصيا اعتقد أن LINQ ستصبح البديل في معالجة البيانات للمبرمجين الذين يستخدمون الان كائنات ADO.NET . ونسخة Express قوية ايضا وسهلة التداول replication فكلاهما توجه جيد للتطبيقات المكتبية لكني اعتقد من وجهة نظر شخصية أن CE كافية لنوعية البرامج التي لاتحتاج اتصال دائم بقاعدة البيانات والتي تزور قاعدة البيانات من حين لآخر وهكذا معظم برامجنا البسيطة ...اما البرامج التي تتطلب تزامنا آنيا مع قاعدة البيانات مع تعدد المستخدمين فلا اعتقد ان CE تفي بالغرض .

وانتظر رأيك ....

مع التحية .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا لك على الموضوع المميز صراحة, الخلط حصل عند الاخ Ammar Gaffar بخصوص أنها تعمل على الاجهزة الكفية فقط هو بسبب الاسم

فما يتحدث عنه الاخ مهند عبدالحفيظ هو

Microsoft SQL Server Compact Edition

و الرابط يأخذك إلى النسخة الاحدث حيث كان اول وجود لهذه النسخة مع VS2005 باسم Microsoft SQL Server 2005 Compact Edition

اما ما قصده Ammar Gaffar هو SQL Server 2000 Windows CE Edition 2.0

و هي النسخة السابقة لدعم قواعد بيانات SQL Server على الاجهزة الكفية فقط

تعديل/إضافة:

الميزة الهامة لها عن اكسس هي دعم Linq To SQL و Entity Framework حيث يمكن استخدامها مباشرة, بينما لا يتوفر هذا الشيئ عند التعامل مع اكسس

بالإضافة إلى العيوب التي ذكرت هناك عيب واحد, وهو عدم امكانية فتح الملف عند الزبون على عكس الاكسس الذي يكون متواجد عند الكثير من الزبائن...

تم تعديل بواسطه Wael Dalloul
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا جزيلا على الطرح

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الاخوة الاعزاء

لدى وجه نظر مختلفة - منذ زمن بعيد يوجد

www.SQLite.com

و هى قاعدة بيانات لا تحتاج اعداد - صغيرة -

و الاهم انها قد انشأءت منذ زمن بعيد - اى انها مستقرة.

و تعمل حاليا قاعدة البيانت على ملايين الاجهزة - و من اللمكن ان يكون جهازك منها.

فلو عندك مثلا الفايرفوكس فانت عندك هذة القاعدة !!!!

يمكن نسخ قاعدة البيانات من المحمول الى الجهاز و العكس بدون اى عمل اضافى. كما يمكن لنفس الملف ان يعمل على انظمة التشغيل الاخرى مثل لينكس.

لقد استخدمتها لعمل تطبيق على جهاز - يشبة المحمول و يعمل على ويندوز CE - ,و فيها يقوم المستخدم لجهاز بعمل نسخ لقاعدة البيانت من الجهاز و يستخدم نفس قاعدة البيانت على الكمبيوتر.

و يبدو ان ميكروسوفت بدات بالتقليد لهذا المنتج.

بالمناسبة هو مجانى و مفتوح المصدر

الحقيقة ان عيناى قد رات الكثير عندما قررت ان اختبر منتجات اخرى غير منتجات ميكروسفت .

مناسبة المصادر المفتوحة

بالنسبة لمحبى البرمجة بفيجوال بيسك الاصدار 6 - هل احدكم جرب هذة اللغة المجانية

http://www.autoitscript.com

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .