PDA

View Full Version : sqlserver compact



visual_sadegh
دوشنبه 05 فروردین 1387, 07:10 صبح
سلام
با عرض تبریک سال نو و آرزوی داشتن سالی پربار در پیش رو
من تازه کار با vb2008 رو شروع کردم
متوجه شدم که پایگاه داده ای که از قسمت نیو آیتم توی پروژه اضافه می شه sqlserver compact هست و پسوند اونم sdf هست.مدیریت اون توی دات نت کمی مشکله ، من تو چه محیط دیگه ای می تونم با اون فایل کار کنم، منظورم ساختن جدول و کوری و اینجور کاراست.
ممنون می شم راهنماییم کنید.

visual_sadegh
چهارشنبه 07 فروردین 1387, 06:25 صبح
واقعا جوابش اینقدر سخته؟:افسرده:

__H2__
چهارشنبه 07 فروردین 1387, 09:23 صبح
سلام
مطمئن نیستم ولی احتمالاً SQLServer Managment باید بتواند، چون اصولاً مخصوص این کار است و نسخه Express اش را میتوانید از مایکروسافت دانلود کنید.

ولی باید توجه داشته باشید که sqlserver compact بسیاری از امکانات SQL Server را ندارد، مثل رویه های ذخیره شده، تریگرها و... و... و...
بیشتر آدم را یاد Access می اندازد تا ابهت SQL Server !

ولی نکته مثبت آن است که مثل Access به راحتی اجرا میشود و نیازی به فعال بودن سرویس خاصی ندارد و به راحتی قابل راه اندازی و اجرای درون برنامه ای است.

visual_sadegh
پنج شنبه 08 فروردین 1387, 07:15 صبح
احتمالاً SQLServer Managment باید بتواند، چون اصولاً مخصوص این کار است و نسخه Express اش را میتوانید از مایکروسافت دانلود کنید.
نه متاسفانه با اون نتونستم.چه دلیلی می تونه وجود داشته باشه که بجای access از sqlserver compact استفاده کنیم.

__H2__
شنبه 10 فروردین 1387, 09:40 صبح
سلام
هرچی هم که باشه باز Access در قدوقواره SQL Server نیست.! مثلاً نوع داده های SQL Server بسیار متنوع تر است.

sqlserver compact در برنامه های بزرگ و پیچیده هم میتونه کاربد داشته باشه .... !
به علت هماهنگی نظیر به نظیر فیلدها با نسخه های صنعتی SQL Server، میتوان از sqlserver compact در شبکه ها به عنوان یک Cache محلی داده ها استفاده کرد.

مثلاً برای جاهایی که ارتباط مدام و ایمنی با سرور برقرار نیست اگر برنالمه فقط به سرور اصلی متکی باشد با قطع ارتباط از کار میافتد... ولی برنامه میتواند داده ها را محلی و در نوعی آفلاینی در sqlserver compact تغییر و ویرایش و اضافه کند و بعد که به سرور وصل شده سرور را آپدید و خود را از سرور Refresh کند.

امکاناتی هم برای همین منظور در VS2008 در نظر گرفته شده.

برای درک تفاوت SQL Server Compact با نسخه مجانی SQL Server Express میتوانید به تصویر زیر دقت کنید.
گرچه مقایسه با نسخه های اصلی SQL Server نیست، ولی بد نیست.
(با تشکر از دوستان dotnetsource بابت این تصویر.)
http://i14.tinypic.com/2rwswmr.gif

visual_sadegh
یک شنبه 11 فروردین 1387, 08:21 صبح
ممنون ولی مدیریت این فایل توی خود محیط دات نت 2008 مشکله آیا راهی وجود داره تا راحت تر مدیریت بشه،شبیه اینترپرایس خود اس کیو ال سرور

__H2__
دوشنبه 19 فروردین 1387, 10:11 صبح
سلام
منظورتان از مدیریت چیه؟
کم وزیاد کردن جداول و فیلدها؟
اگر منظورتان همین است ....
به نظر شخصی من که خود VS محیط ساده و کاراکدی برای این کار دارد ولی بجز آن فقط SQLServer Managment می ماند که گفتید نتوانستید، ولی باز فکر کنم باید یک جوری بشود! (تا حالا تستش نکردم، اگر یادم نرفت سعی میکنم در زمانی خالی تستی انجام دهم)

البته در زمان اجرا هم کد شما میتواتند با دستورات SQL اقدام به تغییر دادن ساختارهای داخلی وبنیادین دیتابیس های SQLServer کند.

visual_sadegh
دوشنبه 19 فروردین 1387, 10:42 صبح
ممنون
تاپیکی مشابه توی این بخش فعاله لطفا شرکت کنید.
http://barnamenevis.org/forum/showthread.php?p=493709&posted=1#post493709

__H2__
چهارشنبه 21 فروردین 1387, 14:35 عصر
سلام

ممنون ولی مدیریت این فایل توی خود محیط دات نت 2008 مشکله آیا راهی وجود داره تا راحت تر مدیریت بشه،شبیه اینترپرایس خود اس کیو ال سرور
سلام
در یک فرصت کوتاهی دو تست کردم و جواب نگرفتم.
گرچه اطمینان ندارم ولی بعید میدانم نسخه جاری برنامه SQLManagment بتواند به این نسخه جدید، یعنی SqlServerCompact وصل شود.
ولی مجدداً تاکید میکنم که امکانات کم VS جهت ویرایش sdf ها ناشی از پشتیبانی کم sdf ها از امکانات است نه مشکل VS.
و اگر برنامه ی دیگری هم برای ادیت sdf ها پیدا کنید، شاید چیز زیادتری افزون بر امکانات خود VS نداشته باشد، فوقش ابزار آلات جانبی مثل Import و Export دیتا بین بانکهای مختلف و...

sh
چهارشنبه 21 فروردین 1387, 19:31 عصر
دوستان عزیز تموم کارهایی که در Management Studio Express در خصوص ایندکس و تریگر و ویو و استورپروسیجر و غیره را میتونین انجام بدین در ویژوال استدیو هم قابل انجام فقط کافیه بدونین از کجا و به چه شکل

یادمه جایی خوندم که ماکروسافت توصیه کرده بود امورات مربوط به نسخه اکسپرس و کامپکت را از درون محیط ویژوال استدیو انجام بدین

بهر حال من به شخصه هیچ مشکلی با هر دو محیط ندارم

visual_sadegh
پنج شنبه 22 فروردین 1387, 07:23 صبح
ممکنه بگید کجا از sqlserver کامپکت استفاده کنم
مزیتش نسبت به اکسس چیه؟

__H2__
شنبه 24 فروردین 1387, 12:05 عصر
سلام
یک مقایسه تفاوتهای سریع و ساده در حد حضور ذهن من:


Access
1) معمولاً نیاز به هیچ نصبی ندارد و در هسته نصبی ویندوز موجود است.
2) View دارد
3) دستورات DDL ندارد. (یا حداقل من ندیده ام)

Compact
1) حداقل نیاز به یک نصب کوچک دارد ولی فوق العاده بی دردسر
2) View ندارد
3) دستورات DDL دارد.

فعلاً دیگر یادم نمی آید.

ولی نظر شخصی من.
من SQLServer (نسخه کامل) را به هر چیزی ترجیح میدهم، برای هر کاری، ریز و درشت!
اگر تحت SQLServer کد بنویسید بعداً با تغییر شرایط نیاز به تغییر کد نخواهید داشت.
مثلاً داده ها چه در رایانه خودتان باشد چه در سروری در آن سوی دیگر کره زمین، کد شما تحت SQLServer هیچ تغییری نخواهد کرد به سادگی داده های داخل رایانه خود میتوانید از داده های موجود در شبکه و وب استفاده کنید و فقط باید ConnectionString را تغییر دهید و خیلی راحت میشود برنامه را شبکه ای کرد.

که اغلب نیاز شرکت های امروزی همین است.
اگر نخواهند نرم افزار بین شعبه های مختلف در نقاط مختلف شهر و کشور کار کند.
حتماً میخواهند که در ساختمان خودشان هر رایانه ای بتواند به اطلاعات دسترسی داشته باشد.

ما بانک هایی با SQLServer داریم که بیش از 70 ترابایت حجم دارند، 70 ترابایت!
SQLServer امکانات توذیع بسیار دارد که اطلاعات را در سرورهای مختلف و جدا با سرعت بالا و امنیت و در بدترین شرایط و شدیدترین تعداد درخواستها مدیریت کند.
و تازه محدودیتی وجود ندارد گرچه نسخه های Compact و Express (همینطور Access) محدودیت 2 تا 4 گیگی دارند.

(
اشتباه متوجه نشوید، شما میتوانید برنامه تان را با SQLExpress بنویسید ولی اگر در جایی که میخواهید برنامه را استفاده کنید، نیازشان بیش از 2 گیگ بود باید از نسخه های کامل SQLServer استفاده کنید مثل Develop و Enterprise و... برنامه شما تغییری ندارد.
)

پس در کل چسبیدن به SQLServer به نفع شما است.

موتور JET که اصل Access است فقط شاید به درد ساخت برنامه "دفتر تلفن کوچک" یا "دیکشنری کوچک لغات" بخورد و... نه چیزی بیش از.


در ذات نسخه Compact هم چندان تعریفی ندارد، ولی هماهنگ با نسخه های برتر SQLServer است.
اگر برنامه تان را با Comapct بسازید، بعداً اگر خواستید و بدون تغییر در کدها میتوانید از نسخه های دیگر SQLServer استفاده کنید.

ولی به نظر میرسد مایکروسافت Compact را بیشتر برای کار در کنار نسخه های اصلی SQLServer عرضه کرده تا استفاده تک (گرچه در استفاده تک هم مشکل ندارد.)

تکرار پست 5:


هرچی هم که باشه باز Access در قدوقواره SQL Server نیست.! مثلاً نوع داده های SQL Server بسیار متنوع تر است.

sqlserver compact در برنامه های بزرگ و پیچیده هم میتونه کاربد داشته باشه .... !
به علت هماهنگی نظیر به نظیر فیلدها با نسخه های صنعتی SQL Server، میتوان از sqlserver compact در شبکه ها به عنوان یک Cache محلی داده ها استفاده کرد.

مثلاً برای جاهایی که ارتباط مدام و ایمنی با سرور برقرار نیست اگر برنالمه فقط به سرور اصلی متکی باشد با قطع ارتباط از کار میافتد... ولی برنامه میتواند داده ها را محلی و در نوعی آفلاینی در sqlserver compact تغییر و ویرایش و اضافه کند و بعد که به سرور وصل شده سرور را آپدید و خود را از سرور Refresh کند.

امکاناتی هم برای همین منظور در VS2008 در نظر گرفته شده.

visual_sadegh
شنبه 24 فروردین 1387, 12:19 عصر
تشکر از توجه شما

اگر برنامه تان را با Comapct بسازید، بعداً اگر خواستید و بدون تغییر در کدها میتوانید از نسخه های دیگر SQLServer استفاده کنید.
کاش اینطوری بود ولی نیست دات نت 2008 اومده برای این نسخه کانکشن مخصوص به خودش ساخه و همینطور زیر مجموعه هاش
به این معنا که تا جایی که می دونم شما نمی تونید با این شیء به کامپکت وصل بشید.

Dim Cn as data.sqlclient.SqlConnettion
یعنی تغییر دیتابیس از کامپکت به اس کیو ال یعنی فاجعه.
جدای از این مطلب طراحی نرم افزارهایی که قراره همیشه سینگل بمونن چی؟
به نظر میاد کامپکت فقط اسم sql رو یدک می کشه.

babakj
شنبه 24 فروردین 1387, 13:03 عصر
Conclusion

SQL Server Compact SQL Server Express Edition
Reasons to use

•When you want essential relational database functionality in a compact footprint
•Ideal for mobile and desktop applications, including occasionally-connected
•Embeddable in applications
•Free to download, develop, deploy, and redistribute
•Ideal for small server deployments as well as desktop applications with more rich requirements such as full text search and powerful XML query processing.
•When you want a seamless upgrade to SQL Workgroup, Standard, and Enterprise editions
•Free to download, develop, deploy, and redistribute
Reasons not to use
•When you want to run as a service
•When you need a multi-user database server
•When you need the full functionality of SQL Server
•When the footprint and memory requirements need to be compact
•When you want to run in process
•When you want to target devices





http://www.microsoft.com/library/gallery/templates/MNP2.Common/images/arrow_px_up.gif (http://www.microsoft.com/sql/editions/compact/sscecomparison.mspx#top)

sh
شنبه 24 فروردین 1387, 19:20 عصر
یه نکته ای رو بگم

اتوبوس از یه پراید قویتره درسته ؟ به قول معروف جادار و مطمئن

حالا آیا میشه با اتوبوس که تعداد نفرات و بار بیشتری رو حمل میکنه توی یه کوچه یا یه خیابان دورن شهری ویراژ داد و راحت رانندگی کرد ؟ صدردصد نه و با پراید با وجود توان کمتر کار شما به بهترین نحو انجام میشه

بیش از 70 درصد برنامه های که توسط برنامه نویسان عادی انجام میشه با همین Sqlexpress براحتی امکان پذیره و به قول معروف از سر آدم هم زیادتره و دردسرهای نصب برای کاربران هم کمتره ولی نمیدونم چرا بعضی ها برای نوشتن یه برنامه ساده میخوانSQL Server 2005 Enterprice رو نصب کنن!

میخوای برنامه حسابداری بنویسین ؟ برین دیتا بیس برنامه رافع 7 رو نگاه کن ببین از اکسس استفاده کرده یا ده تا برنامه دیگه هنوز از Dbase استفاده میکنن

هر چیزی در جای خودش قابل استفاده هست

visual_sadegh
یک شنبه 25 فروردین 1387, 08:12 صبح
آقا شهریار دوست عزیز
اگه ممکنه بگین چه دلیلی وجود داره که ما بجای استفاده از اکسس از اس کیو ال کامپکت استفاده کنیم چه مزییتی نسبت به اکسس داره، بزارین من چند تا مزیت اکسس رو نسبت به اس کیو ال بگم
راهبریش آسونتره، از ویو ها پشتیبانی می کنه، حجم فایل در مقایسه با فایل اس کیو ال کامپکت کمتره، امکان استفاده در شبکه رو هم داره،
حالا شما مزیت اس کیو ال کامپکت رو نسبت به اکسس بگین،
ممنون

__H2__
دوشنبه 26 فروردین 1387, 12:47 عصر
سلام

به این معنا که تا جایی که می دونم شما نمی تونید با این شیء به کامپکت وصل بشید.

Dim Cn as data.sqlclient.SqlConnettion

تا حالا استفاده عملی و تکی از این برنامه نکرده ام (ولی گمان میکردم بشود) .
الآن VS ندارم، ولی حتماً تست میکنم اگر حرف شما صحیح باشد و با SqlClient قابل اتصال نباشد، خیلی بد میشود، خیلی. موارد کاربرد را به همان همزمانی با ابزارات الات داخلی کاهش میدهد.

و اما در مورد نسخه Express باید بگم که واقعاً از آن استفاده میکنم و همان طور که آقای "شهریار" هم گفتند، برای بسیاری از برنامه ها از سر برنامه هم زیاد است.
منظورم آن بود که اگر هم زمانی نیاز به حجم عظیم اطلاعات پیدا کنید به راحتی و بدون تغییر کد میتوانید نسخه های قوی تر را نصب کنید.
وگرنه برای اغلب اوقات خود من Express را ترجیح میدهم.
مخصوصاً هم برای نسخه نهایی که تحویل میدهد، چون چیز کمتری نصب میکند و رابط کمتری دارد (کاربران معمولی نمیتوانند یک راست با دیتا اصلی کار کنند مگر اینکه بتوانند با sqlcmd کار کنند.)
بعد اگر یک زمانی اطلاعاتتشان از حد 2G فراتر رفت و.... میتوانند نسخه قوی تر را نصب کنند.

حتی VB.Net Express و C#.Net Express هم که نسخه 2005 اشان را در جایی دیدم، بسیار خوب و کارآمد بودند.
اصلاً فکر نمی کردم این نسخه های رایگان تا این حد به نسخه های اصل، شباهت IDE داشته باشند.

visual_sadegh
دوشنبه 26 فروردین 1387, 13:46 عصر
ولی حتماً تست میکنم اگر حرف شما صحیح باشد و با SqlClient قابل اتصال نباشد، خیلی بد میشود، خیلی. موارد کاربرد را به همان همزمانی با ابزارات الات داخلی کاهش میدهد.
با این ابزار می شود

Dim Cn as SqlClientce.SqlceConnection

__H2__
چهارشنبه 28 فروردین 1387, 10:20 صبح
سلام
در مورد SQL Server Compact و System.Data.SqlClient.SqlConnection
تستی کردم، متاسفانه نظر کاربر visual_sadegh درست بود.

SQL Server Compact با اینکه نام SQLServer را یدک میکشد، ولی نمیتوان با System.Data.SqlClient.SqlConnection به آن وصل شد.
(احتماً به دلیل اینکه Comapct فاقد Windows Service میباشد، مجبور شده اند کلاسسهای جدیدی برای کار بسازند.)

دلیل کارنکردن SQLServerManagment هم احتمالاً همین است.
چون از محیط IDE استاندارد توسعه مایکروسافت (طراحی شده با ++C وغیر دات نتی) که فاکتور بگیریم، تقریباً اکثر یا تمام برنامه SQLManagment خود با دات نت و استفاده از System.Data.SqlClient و SMO طراحی شده.
با این حساب بدیهی است که SQLServerManagment هم نتواند به آن وصل شود.

فکر کنم SQLServerCompact را نباید نگارشی از SQLServer تصور کرد.

گرچه از دکمه تشکر هم استفاده کردم، ولی باز مجدداً از این دوست عزیز به خاطر یادآوری نکته بسیار مفیدشان تشکر میکنم.

در آخر (همانطور که دوستان اشاره کردند.)، اگر کسی برایش جذاب و هیجان انگیز بود (!) و خواست مستقیماً به Compact وصل شود باید از کلاسسهای System.Data.SqlServerCe.dll استفاده کند، مثلاً System.Data.SqlServerCe.SqlCeConnection

visual_sadegh
پنج شنبه 29 فروردین 1387, 07:26 صبح
تشکر از توجه شما
آیا میشه مزیتی برای sql Compact قائل شد که باعث بشه بجای اکسس از اون استفاده کنیم؟