۱۳۸۹/۱۰/۰۵

خلاصه‌اي در مورد SQL Server CE


SQL Server CE براي اولين بار جهت استفاده در SmartPhones طراحي شد؛ جزو خانواده‌ي Embedded databases قرار مي‌گيرد و اين مزايا را دارد:
- نيازي به نصب ندارد و از چند DLL تشكيل شده است (براي مثال جهت استفاده در كارهاي تك كاربره‌ي قابل حمل ايده‌آل است).
- رايگان است (جهت استفاده در كارهاي تجاري و غيرتجاري).
- حجم كمي دارد (جمعا كمتر از دو مگابايت).
- پروايدر ADO.NET آن موجود است (توسط فضاي نام System.Data.SqlServerCe كه به كمك اسمبلي System.Data.SqlServerCe.dll قرار گرفته در مسير C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Desktop ارائه مي‌شود).
- با كمك ORM هايي مانند Entity framework و يا NHibernate نيز مي‌توان با آن كار كرد.
- نسخه‌ي 4 نهايي آن كه قرار است در زمان ارائه‌ي SP1 مربوط به VS.NET 2010 ارائه شود، جهت استفاده در برنامه‌هاي ASP.NET (برنامه‌هاي چند كاربره) ايي كه تعداد كاربر كمي دارند، بهينه سازي شده و اين مورد يك مزيت مهم نسبت به SQLite است كه اساسا با تردهاي همزمان جهت كار با بانك اطلاعاتي مشكل دارد.
- امكان گذاشتن كلمه‌ي عبور بر روي بانك اطلاعاتي آن وجود دارد كه سبب رمزنگاري خودكار آن نيز خواهد شد (اين مورد به صورت پيش فرض در SQLite پيش بيني نشده و جزو مواردي كه است كه بايد براي آن هزينه كرد). الگوريتم رمزنگاري آن به صورت رسمي معرفي نشده، ولي به احتمال زياد AES مي‌باشد.
- از ADO.NET Sync Framework پشتيباني مي‌كند.

ملاحظات:
- به آن مي‌توان به صورت نسخه‌ي تعديل شده‌ي SQL Server 2000 با توانايي‌هاي كاهش يافته نگاه كرد. در آن خبري از رويه‌هاي ذخيره شده، View ها ، Full text search ، CLR Procs، CLR Triggers و غيره نيست (سطح توقع را بايد در حد همان 2 مگابايت پايين نگه داشت!). ليست كامل : (+)
- Management studio مربوط به SQL Server 2005 به هيچ عنوان از آن پشتيباني نمي‌كند و تنها نسخه‌ي 2008 است كه نگارش 3 و نيم آن‌را پشتيباني مي‌كند آن هم نه با توانايي‌هايي كه جهت كار با SQL Server اصلي وجود دارد. مثلا امكان rename يك فيلد را ندارد و بايد براي اينكار كوئري نوشت. خوشبختانه يك سري پروژه‌ي رايگان در سايت CodePlex اين نقايص را پوشش داده‌اند؛ براي مثال : ExportSqlCe
- از آنجائيكه DLL هاي SQL CE از نوع Native هستند، بايد دقت داشت كه حين استفاده از آن‌ها در دات نت فريم ورك اگر platform target قسمت build برنامه بر روي ALL CPU تنظيم شده باشد، برنامه به احتمال زياد در سيستم‌هاي 64 بيتي كرش خواهد كرد (اگر در حين توسعه برنامه از DLL‌هاي بومي 32 بيتي آن استفاده شده باشد). بنابراين نياز است DLL هاي 64 بيتي را به صورت جداگانه جهت سيستم‌هاي 64 بيتي ارائه داد. اطلاعات بيشتر: (+) و (+) و (+)
- Entity framework يك سري از قابليت‌هاي اين بانك اطلاعاتي را پشتيباني نمي‌كند. براي مثال اگر يك primary key از نوع identity را تعريف كرديد، برنامه كار نخواهد كرد! ليست مواردي را كه پشتيباني نمي‌شوند، در اين آدرس مي‌توان مشاهده كرد.

و اخبار مرتبط با SQL CE را در اين بلاگ مي‌توانيد دنبال كنيد.