PDA

View Full Version : سوال: آیا باید microsoft sql server را در سیستم کاربران نصب کرد؟



md3848
چهارشنبه 08 اردیبهشت 1400, 23:17 عصر
سلام، من از microsoft sql server استفاده میکنم برا دیتابیس هام، سوالی که دارم اینه که باید microsoft sql server رو در سیستم کاربران نصب کنم؟ یعنی نصب بودن microsoft sql server در سیستم کاربرا اجباری هستش؟ :گریه: چون حجم microsoft sql server چیزی در حدود 1.2GB هستش، درحالی که پروژه من فوقش 100 میگ ( که اونم فشردش کنی میشه 10 میگ ) :لبخند:
چون سیستم دومی نداشتم که روش تست کنم، مجبور شدم سوال کنم، البته سرچ هم کردم تو نت فارسی حالا نیمدونم بد سرچ کردم یا هر چیز دیگه ای به نتیجه نرسیدم. :لبخند:

mr.sirwan
پنج شنبه 09 اردیبهشت 1400, 00:23 صبح
سلام، من از microsoft sql server استفاده میکنم برا دیتابیس هام، سوالی که دارم اینه که باید microsoft sql server رو در سیستم کاربران نصب کنم؟ یعنی نصب بودن microsoft sql server در سیستم کاربرا اجباری هستش؟ :گریه: چون حجم microsoft sql server چیزی در حدود 1.2GB هستش، درحالی که پروژه من فوقش 100 میگ ( که اونم فشردش کنی میشه 10 میگ ) :لبخند:
چون سیستم دومی نداشتم که روش تست کنم، مجبور شدم سوال کنم، البته سرچ هم کردم تو نت فارسی حالا نیمدونم بد سرچ کردم یا هر چیز دیگه ای به نتیجه نرسیدم. :لبخند:

جواب کوتاه: بله نیازه نصب بشه
جواب بلند: اگر برنامه تون تک کاربره هستش و نیازی به تحت شبکه بودن نداره، میتونید از نسخه های سبک sql server استفاده کنید مثل SQL Express و یا MSSQLLocalDb که حجم ستاپشون نهایتا 40 تا 50 مگ خواهد بود و میتونید توسط برنامه های ستاپ ساز کاری کنید که بصورت اتوماتیک همراه نرم افزارتون نصب بشه
اما اگر نرم افزارتون یه نرم افزار سازمانیه و نیازه که حتما تحت شبکه کار کنه، این موقعیت کاملا طبیعیه و حتما نیازه که نسخه کامل SQL Server رو روی سیستم کاربر نصب کنید، حالا این نصب میتونه توسط شما یا خود کاربر نهایی انجام بشه، اون موردی هم که گفتم نرم افزارتون اگر سازمانیه برای این بود که داخل سازمان ها همیشه واحد IT وجود داره و شخص یا اشخاصی هستن که آشنایی هرچند نسبی با نصب و راه اندازی دیتابیس ها رو دارن (البته نمیشه گفت صد در صد مواقع اینجوریه) پس در این مورد نگرانیتون کمی کاهش پیدا میکنه

mehran6764
پنج شنبه 09 اردیبهشت 1400, 09:39 صبح
SQL Express تحت شبکه می تونه کار کنه ؟
من فکر می کنم نسخه های قدیم مثل SQL 2000 هم حجم کمتری داشته باشن هم سریعتر نصب بشن

mr.sirwan
پنج شنبه 09 اردیبهشت 1400, 17:36 عصر
SQL Express تحت شبکه می تونه کار کنه ؟
من فکر می کنم نسخه های قدیم مثل SQL 2000 هم حجم کمتری داشته باشن هم سریعتر نصب بشن

اونم تحت شبکه کار میکنه منتها محدودیت حجمی داره برا دیتابیس، هر دیتابیس بیشتر از 10 گیگ نمیتونه باشه

md3848
پنج شنبه 09 اردیبهشت 1400, 22:51 عصر
.... حذف شود این پست

md3848
پنج شنبه 09 اردیبهشت 1400, 22:52 عصر
جواب کوتاه: بله نیازه نصب بشهجواب بلند: اگر برنامه تون تک کاربره هستش و نیازی به تحت شبکه بودن نداره، میتونید از نسخه های سبک sql server استفاده کنید مثل SQL Express و یا MSSQLLocalDb که حجم ستاپشون نهایتا 40 تا 50 مگ خواهد بود و میتونید توسط برنامه های ستاپ ساز کاری کنید که بصورت اتوماتیک همراه نرم افزارتون نصب بشه
اما اگر نرم افزارتون یه نرم افزار سازمانیه و نیازه که حتما تحت شبکه کار کنه، این موقعیت کاملا طبیعیه و حتما نیازه که نسخه کامل SQL Server رو روی سیستم کاربر نصب کنید، حالا این نصب میتونه توسط شما یا خود کاربر نهایی انجام بشه، اون موردی هم که گفتم نرم افزارتون اگر سازمانیه برای این بود که داخل سازمان ها همیشه واحد IT وجود داره و شخص یا اشخاصی هستن که آشنایی هرچند نسبی با نصب و راه اندازی دیتابیس ها رو دارن (البته نمیشه گفت صد در صد مواقع اینجوریه) پس در این مورد نگرانیتون کمی کاهش پیدا میکنه

خب حرف شما رو تست کردم تو ویندوز مجازی و صحیح بود، نیازه که نصب بشه متاسفانه!:گریه:

اما بحث نسخه های مختلف Microsoft SQL Server : خب کلا 3 تا نسخه داریم ( حجم ها بر اساس نسخه 2019 هستش ) :
1) کاملترین و حجیم ترین نسخه ( حدود 1.5GB ) : Microsoft SQL Server 2019 Enterprise x64
2) نسخه میانه ( حدود 250MB ) : Microsoft SQL Server 2019 Express x64 : خب نصب اینم مثل مورد شماره 1 هستش، نصبش داستان داره، یعنی کاربرا باید اینو نصب کنن! من جای کاربر باشم بیخیال استفاده از اون نرم افزار میشم شرافتا :لبخند: یعنی نصب ویندوز برا من ساده تر از نصب این SQL SERVER هستش!:عصبانی:چه برسه به کاربرا.
3) سبک ترین نسخه ( حدود 50MB ) : Microsoft SQL Server 2019 LocalDB x64، توضیحات درباره این نسخه : SQL Server Express LocalDB (https://docs.microsoft.com/en-us/sql/database-engine/configure-windows/sql-server-express-localdb?view=sql-server-ver15)؛ این نسخه فایل اجرایی چیزی نداره، و فقط یه سری DLL هستش؛ من اینو نصب کردم اما پروژم کار نکرد، چراشو نیمدونم :متفکر: ولی دوست دارم بدونم دلیلشو :لبخند:

در کل با این وضعیت بنظرم کار واقعا اشتباهی بود استفاده از Microsoft SQL Server برای پروژه هایی از این دست ( پروژه های ساده و کم حجم که مورد استفاده عموم مردم ممکنه قرار بگیره، و برا شرکت ها و سازمان ها و... نیستش )؛ من فک میکردم از این دیتابیس استفاده کنم، سمت کاربر عنددش یه فایل 50 میگی ( مثل DOT NET ها ) نصب میکنم و تمام ( تازه اونم میگفتم شاید از قبل مایکروسافت خودش به صورت پیشفرض رو سیستما نصب کرده باشه :قهقهه::گریه: )؛

خب با این اوضاع من 2 تا راه بنظرم جلوم هستش، 1) یا این که کاری کنم که پروژه ام با اون نسخه LocalDB کار کنه، 2) یا این که واقعا باید برم سراغ یه دیتابیس دیگه، تو این 2 مورد ممنون میشم راهنمایی کنید، اگه مورد 1 رو راهنمایی کنید که کار منم ساده تر میشه :لبخند::قلب:

3) یه سوال دیگه ( این سوال ربطی به موضوع اصلی بحثمون نداره ولی برا کنجکاوی میپرسم :لبخند: )، این فایل دیتابیس Microsoft SQL Server تو پروژه خروجی قرار میگیره؟ تو کدوم فایل DLL قرار داره؟ چطوری به جداول و دیتابیس های داخل DLL دسترسی پیدا کنم؟

SajjadKhati
پنج شنبه 09 اردیبهشت 1400, 23:34 عصر
سلام
اگه با دیتابیس آفلاین کار میکنید ، میتونید از sqlite استفاده کنید که نیاز به نصب موتور نداره . البته محدودیت های کوچیکی نسبت به sql داره اما برای پروژه های آفلاینِ سبک تا متوسط ، گزینه ی خوبی هه .

md3848
پنج شنبه 09 اردیبهشت 1400, 23:44 عصر
سلام - اگه با دیتابیس آفلاین کار میکنید ، میتونید از sqlite استفاده کنید که نیاز به نصب موتور نداره . البته محدودیت های کوچیکی نسبت به sql داره اما برای پروژه های آفلاینِ سبک تا متوسط ، گزینه ی خوبی هه .
1) سلام، آره دیتابیسام آفلاینه؛ فقط ممکنه تو نسخه های بعدی پروژه دیتابیس تغییر کنه جداولش یا، جدولی حذف بشه یا اضافه بشه یا داده های یه جدولی تغییر کنه یا مواردی از این دست؛ دیتابیس هم یه سری داده های ثابت داره که کاربر میخونه؛ یه سری جداول داره که داده های مخصوص هر کاربر توش ذخیره میشه و تو بروزرسانی ها نباید مشکلی براش رخ بده.
2) دیتابیس آنلاین داستانش چیه دقیقا؟ من خواستم به دیتابیس هاستم وصل بشم شرکت گفت نمیشه و باید سرور مجازی بخری و از این داستانا که ماهی هم 1 تومن پولشه :تشویق:، دیتابیس آنلاین نسخه رایگان یا کرک شده نداریم؟ :لبخند::قهقهه:



1) خب برا بحث مهاجرت از SQL SERVER به سمت SQLite از این مطلب استفاده کردم : Convert SQL Server DB to SQLite DB (https://www.codeproject.com/Articles/26932/Convert-SQL-Server-DB-to-SQLite-DB) که به کمک نرم افزار ارائه شده داخل مطلب فوق، تو جیک ثانیه دیتابیسم تبدیل شد به SQLite :تشویق:
2) از نرم افزار SQLite Expert Professional برای مدیریت دیتابیس SQLite ام استفاده میکنم.
3) پکیج Microsoft.Data.Sqlite.Core رو هم نصب میکنیم برا پروژه WPF / .NET CORE 5 ام
4) فقط میمونه اصلاح توابعی که باهاشون با دیتابیس در ارتباط بودم.
5) چیز دیگه ای فک نکنم نیاز باشه!

barnamenevisjavan
جمعه 10 اردیبهشت 1400, 11:40 صبح
1) سلام، آره دیتابیسام آفلاینه؛ فقط ممکنه تو نسخه های بعدی پروژه دیتابیس تغییر کنه جداولش یا، جدولی حذف بشه یا اضافه بشه یا داده های یه جدولی تغییر کنه یا مواردی از این دست؛ دیتابیس هم یه سری داده های ثابت داره که کاربر میخونه؛ یه سری جداول داره که داده های مخصوص هر کاربر توش ذخیره میشه و تو بروزرسانی ها نباید مشکلی براش رخ بده.
2) دیتابیس آنلاین داستانش چیه دقیقا؟ من خواستم به دیتابیس هاستم وصل بشم شرکت گفت نمیشه و باید سرور مجازی بخری و از این داستانا که ماهی هم 1 تومن پولشه :تشویق:، دیتابیس آنلاین نسخه رایگان یا کرک شده نداریم؟ :لبخند::قهقهه:



1) خب برا بحث مهاجرت از SQL SERVER به سمت SQLite از این مطلب استفاده کردم : Convert SQL Server DB to SQLite DB (https://www.codeproject.com/Articles/26932/Convert-SQL-Server-DB-to-SQLite-DB) که به کمک نرم افزار ارائه شده داخل مطلب فوق، تو جیک ثانیه دیتابیسم تبدیل شد به SQLite :تشویق:
2) از نرم افزار SQLite Expert Professional برای مدیریت دیتابیس SQLite ام استفاده میکنم.
3) پکیج Microsoft.Data.Sqlite.Core رو هم نصب میکنیم برا پروژه WPF / .NET CORE 5 ام
4) فقط میمونه اصلاح توابعی که باهاشون با دیتابیس در ارتباط بودم.
5) چیز دیگه ای فک نکنم نیاز باشه!
دوباره سلام
همین اول بهتون بگم که اگر از sqlite استفاده کنید ویژگی migration رو از دست میدید! sqlite بخاطر ساختار و محدودیتی که توی طراحی خودش داره با migration کاملا سازگار نیست اگر دقیق یادم باشه فقط تغییر نام فیلد ها رو پشتیبانی میکنه و حذف فیلد و جدول رو پشتیبانی نمیکنه. در نتیجه خودتون باید این موضوع رو هندل کنید و در صورت داشتن تغییرات یه migration بنویسید که اطلاعات دیتابیس قبلی رو به جدید منتقل کنه/
در مورد sql شما میتونید اون اسکریپت نهایی دیتابیس رو خروجی بگیری و داخل نرم افزار ستاپ ساز مثل advanced installer اسکریپت رو قرار بدید تا بعد از نصب پیشنیاز (sql express) اون اسکریپت به اصطلاح execute بشه و فایل دیتابیس تو سیستم کاربر ساخته بشه
--
بنظرم از پکیج درستی استفاده نمیکنید پکیج زیر استانداردش هست
Microsoft.EntityFrameworkCore.Sqlite
---
کدهایی که برای ارتباط با دیتابیس زدید هیچ تفاوتی نداره و دست نخورده باقی میمونه
--
در خصوص localdb هم شما باید داخل ویژوال استودیو اول اون رو نصب کنید
https://s2.uupload.ir/files/untitled_uk0i.png

در مقایسه با sqlite، نظر شخصی من اینه sqlite از localdb بهتره چون localdb محدودیت حجم داره و حجم دیتابیسش هم از sqlite بیشتره
--
فایل دیتابیس sql server داخل خود نرم افزار sql قابل دسترسی هستش البته فایلش رو میتونید توی محل نصب sql server پیدا کنید

SajjadKhati
جمعه 10 اردیبهشت 1400, 16:33 عصر
1) سلام، آره دیتابیسام آفلاینه؛ فقط ممکنه تو نسخه های بعدی پروژه دیتابیس تغییر کنه جداولش یا، جدولی حذف بشه یا اضافه بشه یا داده های یه جدولی تغییر کنه یا مواردی از این دست؛ دیتابیس هم یه سری داده های ثابت داره که کاربر میخونه؛ یه سری جداول داره که داده های مخصوص هر کاربر توش ذخیره میشه و تو بروزرسانی ها نباید مشکلی براش رخ بده.
2) دیتابیس آنلاین داستانش چیه دقیقا؟ من خواستم به دیتابیس هاستم وصل بشم شرکت گفت نمیشه و باید سرور مجازی بخری و از این داستانا که ماهی هم 1 تومن پولشه :تشویق:، دیتابیس آنلاین نسخه رایگان یا کرک شده نداریم؟ :لبخند::قهقهه:



1) خب برا بحث مهاجرت از SQL SERVER به سمت SQLite از این مطلب استفاده کردم : Convert SQL Server DB to SQLite DB (https://www.codeproject.com/Articles/26932/Convert-SQL-Server-DB-to-SQLite-DB) که به کمک نرم افزار ارائه شده داخل مطلب فوق، تو جیک ثانیه دیتابیسم تبدیل شد به SQLite :تشویق:
2) از نرم افزار SQLite Expert Professional برای مدیریت دیتابیس SQLite ام استفاده میکنم.
3) پکیج Microsoft.Data.Sqlite.Core رو هم نصب میکنیم برا پروژه WPF / .NET CORE 5 ام
4) فقط میمونه اصلاح توابعی که باهاشون با دیتابیس در ارتباط بودم.
5) چیز دیگه ای فک نکنم نیاز باشه!


سلام
1) بله . تغییر جدول یا ستون ها و فیلدها را پشتیبانی میکنه اما محدودیتی براش ایجاد کرد (مثلا برای حذف ستون از جدول ، محدودیتی ایجاد کرد) که اگه از اساس میخواین ساختار جدول را تغییر بدین ، راهکاری که معرفی میکنه اینه که اطلاعاتِ جدولِ موجود را در یک جدولِ موقتی کپی کنید و جدول جدیدی با ساختار جدیدی بسیازید و اطلاعات جدول موقت را درش کپی کنید :

https://www.sqlite.org/faq.html#q11

برای حذف جدول هم دستور "DROP TABLE" داره و همچنین برای حذف و ویرایش سطرها و ... .

2) منظورم از آفلاین همون local دیتابیس هست .
زمانی که یه سیستم سروری داشته باشین و دیتابیس sqlite را بخواین ازش استفاده کنین ، در این صورت فکر کنم با sqlite به مشکل بخوردید (دقیق نمیدونم . باید بگردید) .

یکی از معایب sqlite اینه که همزمان نمیتونه به چند query جواب بده . فقط به یک query جواب میده که یکی از مشکل اصلی ای که به عنوان دیتابیس برای سرور یا برنامه هایی که همزمان میخوان چندین query را اجرا کنن ، داره .
عیب دیگه اش اینه که تا حدودی وقتی اطلاعات توش ذخیره کنین ، کارایی مناسب داره . از یه حجمی به بالاتر ، کارایی اش کم میشه (میگن از 2 گیگ بالاتر ، کارایی اش کم میشه اما من نمیدونم) .

به هر حال ، قبل از انتقال به هر چیزی (در اینجا sqlite) ، درباره ی مزایا و معایبش جستجو کنید . بزرگترین مزیتش همینه که نیاز به نصب موتور دیتابیس نداره و بیشتر برای نرم افزارهای سبک (از لحاظ دیتابیس و اطلاعات) کارایی داره :

https://logz.io/blog/relational-database-comparison/

و

https://www.digitalocean.com/community/tutorials/sqlite-vs-mysql-vs-postgresql-a-comparison-of-relational-database-management-systems

و

https://www.javatpoint.com/sqlite-advantages-and-disadvantages

---------------------------

توابع و دستورات sqlite هم :

https://sqlite.org/lang.html

md3848
جمعه 10 اردیبهشت 1400, 20:28 عصر
همین اول بهتون بگم که اگر از sqlite استفاده کنید ویژگی migration رو از دست میدید!
بدبختی داریما، SQL SEVER که اونطوری، SQLite که میگی اینطوری، پس از چه دیتابیسی استفاده کنم بنظرت؟ :متفکر:

barnamenevisjavan
جمعه 10 اردیبهشت 1400, 20:56 عصر
بدبختی داریما، SQL SEVER که اونطوری، SQLite که میگی اینطوری، پس از چه دیتابیسی استفاده کنم بنظرت؟ :متفکر:
تا اونجایی که متوجه شدم شما داری یه برنامه قرانی مینویسی، واسه همین زیاد با بانک اطلاعاتی کار نداری. sqlite بهترین گزینه هستش، سعی کنید هنگام طراحی نیازهای دیتابیس رو تشخیص بدید. همینطور شما خودت میتونی یه migration شخصی ایجاد کنی به این صورت که در صورتی که دیتابیس تغییرات داشت، اطلاعات جدول هارو دونه دونه انتقال بدید به دیتابیس جدید کار سختی نیست اطلاعات از دیتابیس A میخونی و میریزی داخل دیتابیس B

sasanghanbari52
جمعه 10 اردیبهشت 1400, 23:23 عصر
سلام
میتونی از فایل اکسس برای بانک اطلاعاتی استفاده کنی نیاز به نصب هم نداره